{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Company Posts Scraper API - Newest Posts, Exact Counts",
    "description": "Used by competitive-intel and social teams watching what rival companies post. LinkedIn company posts scraper returns the newest posts a company page shows publicly: full text, exact reaction and comment counts, media type, reshare origin and post URL. A page with no posts is free.",
    "version": "1.0",
    "x-build-id": "2wsp2GXf1ZdffCs8u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vonsensey~linkedin-company-posts-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vonsensey-linkedin-company-posts-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/vonsensey~linkedin-company-posts-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-vonsensey-linkedin-company-posts-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/vonsensey~linkedin-company-posts-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-vonsensey-linkedin-company-posts-scraper-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "LinkedIn URLs",
            "type": "array",
            "description": "Paste any public LinkedIn links, mixed: company pages, showcase pages, post links (a /posts/... share link, a /feed/update/ link or an lnkd.in short link), job postings (/jobs/view/...), Pulse articles, or a jobs search URL copied from LinkedIn with its filters. Each becomes the matching row type. Links to search results or employee lists need a LinkedIn session and are returned as free rows explaining that.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Job search: keywords",
            "type": "array",
            "description": "Job titles or terms to search for. Each keyword is searched in each location, so 3 keywords and 2 locations are 6 searches. Boolean operators LinkedIn accepts in its search box (quotes, AND, OR, NOT) are passed through as typed.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Job search: locations",
            "type": "array",
            "description": "Locations as you would type them on LinkedIn: 'United States', 'London, England, United Kingdom', 'Remote'. Crossed with keywords.",
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Job search: posted within",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only postings published within this window, in keyword searches and in a company's open jobs alike. A LinkedIn search URL you paste keeps its own window. Verified on 2026-09-02 to change the result set.",
            "default": "any"
          },
          "companies": {
            "title": "Company pages",
            "type": "array",
            "description": "Company or showcase slugs or URLs: 'microsoft', 'https://www.linkedin.com/company/apify/', a showcase URL. What you get for each is set by 'Company: what to read'.",
            "items": {
              "type": "string"
            }
          },
          "companyScope": {
            "title": "Company: what to read",
            "uniqueItems": true,
            "type": "array",
            "description": "details: one company row (exact employee and follower counts, addresses, specialties, affiliated pages, featured employees, ids of the newest posts). posts: the newest posts the company page shows publicly (about ten) as post rows. jobs: the company's open jobs, up to LinkedIn's public cap of 1,000, as job rows. The posted-within window and the job search filters apply to them too, except 'Only jobs at these companies' and geoId.",
            "items": {
              "type": "string",
              "enum": [
                "details",
                "posts",
                "jobs"
              ],
              "enumTitles": [
                "Company details",
                "Newest posts on the page",
                "Open jobs at the company"
              ]
            },
            "default": [
              "posts"
            ]
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "Public post links: the share link LinkedIn's Share > Copy link gives you (/posts/...); a /feed/update/ link or an lnkd.in short link is accepted too. One post row each, with the comments LinkedIn shows publicly as extra rows when the option below is on. A post LinkedIn will not show to a visitor without an account, or a link it declines to open, comes back as a free row saying so.",
            "items": {
              "type": "string"
            }
          },
          "includeComments": {
            "title": "Include the comments shown on the post",
            "type": "boolean",
            "description": "Adds one row per comment LinkedIn renders on the public post page, about ten per post, each with the commenter, their profile URL, the text, the date and the like count. The post row always carries the exact total comment count.",
            "default": false
          },
          "jobUrls": {
            "title": "Job postings by URL or id",
            "type": "array",
            "description": "Job posting links (/jobs/view/...), search links that carry currentJobId=, or bare numeric job ids. One full job row each.",
            "items": {
              "type": "string"
            }
          },
          "articleUrls": {
            "title": "Pulse article URLs",
            "type": "array",
            "description": "LinkedIn Pulse article links (/pulse/...). One article row each with the full text.",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "title": "Experience level",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search and then checked against the seniority the posting itself states; a posting that does not match is neither delivered nor billed. Needs 'Read the full posting' on.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry",
                "associate",
                "mid-senior",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "jobType": {
            "title": "Job type",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search and then checked against the employment type the posting states; a posting that does not match is neither delivered nor billed. Needs 'Read the full posting' on.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "volunteer",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer",
                "Other"
              ]
            }
          },
          "workplaceType": {
            "title": "Workplace",
            "uniqueItems": true,
            "type": "array",
            "description": "Passed to LinkedIn's search as its remote / hybrid / on-site filter. LinkedIn's public job pages carry no structured workplace field, so this one cannot be re-checked on the posting; treat it as LinkedIn's own filtering.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "remote",
                "hybrid"
              ],
              "enumTitles": [
                "On-site",
                "Remote",
                "Hybrid"
              ]
            }
          },
          "companyFilter": {
            "title": "Only jobs at these companies",
            "type": "array",
            "description": "Company slugs, URLs or numeric LinkedIn company ids. Slugs are resolved to the id from the public company page.",
            "items": {
              "type": "string"
            }
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Optional numeric region id from a LinkedIn jobs URL (geoId=...). Used together with the free-text location."
          },
          "easyApply": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Passed to LinkedIn's search as its Easy Apply filter.",
            "default": false
          },
          "under10Applicants": {
            "title": "Under 10 applicants only",
            "type": "boolean",
            "description": "Passed to LinkedIn's search. Verified on 2026-09-02 to change the result set.",
            "default": false
          },
          "titleInclude": {
            "title": "Title must contain",
            "type": "array",
            "description": "Free filter on the listing title before the posting is opened: keep a job only if its title contains every word of at least one of these phrases (case-insensitive). Skipped jobs are neither read nor billed.",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Free filter: drop a job if its title contains any of these words or phrases. Skipped jobs are neither read nor billed.",
            "items": {
              "type": "string"
            }
          },
          "excludeJobIds": {
            "title": "Skip these job ids",
            "type": "array",
            "description": "Job ids you already have. They are never opened and never billed.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerQuery": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap per keyword-and-location search. LinkedIn's public search stops at about 1,000 results; add locations or a shorter date window to go deeper.",
            "default": 100
          },
          "includeJobDetails": {
            "title": "Read the full posting",
            "type": "boolean",
            "description": "On: each job is opened and delivered in full (description, seniority, employment type, function, industries, applicants, salary when stated) as a 'job' row. Off: the listing card only (title, company, location, exact posted date, badges) as a cheaper 'job-card' row, ten per request.",
            "default": true
          },
          "includeCompany": {
            "title": "Add company pages for job results",
            "type": "boolean",
            "description": "For job results: also deliver one company row per distinct company, after the jobs, charged once per company and never per job. Each job row also carries companyInfo (website, size band, members on LinkedIn, industry, headquarters, followers and the numeric company id) from the same company page, at no extra charge.",
            "default": false
          },
          "monitorChangesOnly": {
            "title": "Monitor: only bill what is new or changed",
            "type": "boolean",
            "description": "For scheduled runs. The Actor remembers the job ids it delivered (for 60 days, under whichever of your searches finds them again) and the counts it saw on each company, post and article. On a re-run, jobs you already received are skipped and a company or post whose numbers have not moved is a free 'unchanged' row. Each search that returned listings is still billed as work done, even when nothing in it is new; one the run's time limit stopped before it delivered anything is free.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on billable rows for the whole run, all types together.",
            "default": 40
          },
          "maxCostUsd": {
            "title": "Cost ceiling (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run before it spends more than this, computed from the live event prices. Leave empty for no ceiling. The free summary row always reports what the run actually spent."
          },
          "useProxy": {
            "title": "Force residential proxy",
            "type": "boolean",
            "description": "Not normally needed. Jobs, company pages, posts and articles are read without any proxy; the Actor escalates to a residential exit by itself when LinkedIn refuses a request. Turn this on only if you have been asked to.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}