{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Posts Scraper — Companies, People, Keywords & URLs",
    "description": "Scrape LinkedIn posts from company pages, people profiles, keyword or hashtag searches and post links. One clean row per post: text, exact date, author, reactions, comments, images, video, links, reposted original. Date and engagement filters. No login, no cookies.",
    "version": "0.1",
    "x-build-id": "pAwQIqTmEC6Vvkyn9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~linkedin-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-linkedin-posts-scraper",
        "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/inovaflow~linkedin-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-linkedin-posts-scraper",
        "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/inovaflow~linkedin-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-linkedin-posts-scraper",
        "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": {
          "companyUrls": {
            "title": "Company pages",
            "type": "array",
            "description": "LinkedIn company, school or showcase pages — full URLs or just the slug (`apify`, `https://www.linkedin.com/company/apify/`). Their latest posts come from the page; older ones are found through web search when you ask for more than the page shows.",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "People profiles",
            "type": "array",
            "description": "Public profiles of people — full URLs or just the public identifier (`jancurn`, `https://www.linkedin.com/in/jancurn/`). You get their recent posts and reposts, plus their articles.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Keywords, phrases or hashtags",
            "type": "array",
            "description": "Find public posts by what they say: `web scraping`, `\"MCP server\"`, `#hiring`, `AI agents startup`. Quotes keep an exact phrase. Each query is searched on the web (Brave, then Google) and every matching post page is read in full.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post links",
            "type": "array",
            "description": "Specific posts to read: a post link (`https://www.linkedin.com/posts/…-activity-7514686314999513088-rSrF`), a feed link (`…/feed/update/urn:li:activity:…`), a URN or the bare numeric id.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerSource": {
            "title": "Maximum posts per source",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap per company, profile, query or post list. A company or profile page shows its latest 10–20 posts; asking for more makes the Actor look up the author's older posts through web search.",
            "default": 50
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only posts published after this moment: a date (`2026-09-01`), a date-time, or a relative value (`24h`, `7d`, `2w`, `3m`, `1y`). The exact post time is known from the post id, so older posts are skipped before any page is read."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only posts published before this moment (same formats as above)."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "date",
              "engagement",
              "relevance"
            ],
            "type": "string",
            "description": "Order of the rows within each source.",
            "default": "date"
          },
          "contentType": {
            "title": "Content type",
            "enum": [
              "any",
              "text",
              "image",
              "video",
              "document",
              "article"
            ],
            "type": "string",
            "description": "Keep only posts of one kind.",
            "default": "any"
          },
          "authorType": {
            "title": "Author type",
            "enum": [
              "any",
              "person",
              "company"
            ],
            "type": "string",
            "description": "Keep only posts written by people or only by company pages (useful for keyword searches).",
            "default": "any"
          },
          "includeReposts": {
            "title": "Include reposts",
            "type": "boolean",
            "description": "Keep reposts (the row carries the original author, link and text in the repostOf… fields). Turn off for original posts only.",
            "default": true
          },
          "minReactions": {
            "title": "Minimum reactions",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer reactions.",
            "default": 0
          },
          "minComments": {
            "title": "Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer comments.",
            "default": 0
          },
          "fetchPostDetails": {
            "title": "Open every post page",
            "type": "boolean",
            "description": "Open each post found on a company or profile page as well: exact publish time, media, reaction types, the full reposted original and the visible comments. Turn off to take only what the page shows (faster; text, counts and times are still there). Posts from keyword searches and post links are always read in full.",
            "default": true
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Add one row per visible comment (type = comment, with the commenter's name, profile link, text, date and reactions). Charged per comment; implies opening every post page.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Maximum comments per post",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "LinkedIn shows a guest the first comments of a post (usually up to 10–20).",
            "default": 20
          },
          "discoverOlderPosts": {
            "title": "Look up older posts through web search",
            "type": "boolean",
            "description": "When a company or profile page shows fewer posts than the maximum, find the author's older posts via Brave and Google and read them in full. Turn off to take only what the page shows.",
            "default": true
          },
          "useGoogleSearch": {
            "title": "Also search Google (paid, slower)",
            "type": "boolean",
            "description": "Brave Search is free and finds up to ~20 posts per query and time window. Turn this on to continue on Google through Apify's Google SERP proxy when more posts are wanted than Brave returned: it paginates further but each result page is paid and often slow, and Google frequently answers with a page that cannot be read.",
            "default": false
          },
          "maxSearchPagesPerQuery": {
            "title": "Search pages per query",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Budget of search-engine pages per keyword query or per author look-up (Brave queries and Google pages together).",
            "default": 6
          },
          "maxConcurrency": {
            "title": "Parallel page reads",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many LinkedIn pages are read at the same time.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "LinkedIn's public pages open fine through Apify's datacenter proxy (the default). Whenever an IP is rate-limited the Actor switches that request to the residential proxy by itself, so there is normally nothing to change here.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}