{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Company Posts Scraper - Bulk Export [NO LOGIN] ✅",
    "description": "LinkedIn post scraper for company pages - bulk-export posts with engagement, hashtags, mentions, and author profile enrichment (headline, industry, location, followers). Filter by keyword; sort by top engagement. Paste URLs or bare handles like 'google'. No login, no cookies. >99% success.",
    "version": "0.0",
    "x-build-id": "DuGdGHQgfT6ttMlxW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unseenuser~Company-Posts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unseenuser-Company-Posts",
        "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/unseenuser~Company-Posts/runs": {
      "post": {
        "operationId": "runs-sync-unseenuser-Company-Posts",
        "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/unseenuser~Company-Posts/run-sync": {
      "post": {
        "operationId": "run-sync-unseenuser-Company-Posts",
        "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": "LinkedIn company pages",
            "type": "array",
            "description": "One or more LinkedIn company pages. Paste full URLs (e.g. https://www.linkedin.com/company/google) or bare handles (e.g. google, openai) - both work. Click + Add to include more companies in a single run.",
            "items": {
              "type": "string"
            }
          },
          "max_posts": {
            "title": "How many posts to fetch per company (0 = all)",
            "minimum": 0,
            "type": "integer",
            "description": "0 = fetch every available post (default). Enter a positive number to cap per-company results (e.g. 50 stops after 50 posts per company). No hard ceiling - whatever number you enter is what runs.",
            "default": 0
          },
          "date_filter": {
            "title": "Posted within",
            "enum": [
              "",
              "1h",
              "24h",
              "week",
              "month",
              "3months",
              "6months",
              "year",
              "2years",
              "3years"
            ],
            "type": "string",
            "description": "Rolling time window relative to now. Example: 'Last month' returns posts from the past 30 days. Leave as 'All time' for no window. Ignored when you set an absolute date range below.",
            "default": ""
          },
          "sort_by": {
            "title": "Sort posts by",
            "enum": [
              "",
              "newest",
              "oldest",
              "top"
            ],
            "type": "string",
            "description": "How to order the output rows. 'Newest first' (default) matches how LinkedIn shows the feed. 'Top engagement' ranks by likes + comments + shares descending - useful for finding a company's best-performing posts; note that 'Top engagement' fetches up to 3x your 'How many posts to fetch per company' value from HarvestAPI so it can rank across a larger pool, so expect slightly higher URL processing costs. 'Oldest first' returns the earliest posts within your date range.",
            "default": ""
          },
          "posted_after_date": {
            "title": "Posted after date (optional)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Only return posts published on or after this date. Example: 2026-06-01 returns posts from June 1, 2026 onward. Overrides 'Posted within' when set."
          },
          "posted_before_date": {
            "title": "Posted before date (optional)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Only return posts published on or before this date. Combine with 'Posted after date' for a specific range (e.g. 2026-06-01 to 2026-08-31 for a summer window). Overrides 'Posted within' when set."
          },
          "content_contains": {
            "title": "Post content must contain (optional)",
            "type": "array",
            "description": "Case-insensitive keyword filter on post content. Only posts whose text contains at least one of the entered keywords are kept. Example: enter 'gemini', 'gpt', 'claude' to keep only posts mentioning any of those. Leave empty for no keyword filter. Note: media-only posts with no text are dropped when any keyword is set.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "include_quote_posts": {
            "title": "Include quote posts",
            "type": "boolean",
            "description": "Quote posts share another post with an added comment on top (like a retweet with a comment). On by default. Turn off to exclude them from the output.",
            "default": true
          },
          "include_reposts": {
            "title": "Include reposts",
            "type": "boolean",
            "description": "Reposts are posts the company reshared without adding any text. On by default. Turn off when you want only original writing from the company (useful for content-benchmarking work).",
            "default": true
          },
          "skip_empty_rows": {
            "title": "Skip URLs with no posts",
            "type": "boolean",
            "description": "By default, each URL that returned no posts gets one placeholder row in the output so you can see what came back empty. Turn on to leave those out and get only rows with real post content.",
            "default": false
          },
          "include_author_profile": {
            "title": "Add author profile info (per author)",
            "type": "boolean",
            "description": "Turn on to add author headline (tagline for companies), industry, location, and follower count to each post row. Works for both individual authors (/in/) and company authors (/company/, /school/, /showcase/). Runs one HarvestAPI lookup per unique author, cached across the run. Off by default. Billed at $0.004 per unique author. Example added columns: author_headline = 'AI research and products', author_industry = 'Software Development', author_followers = 31200000.",
            "default": false
          },
          "include_post_extras": {
            "title": "Add post extras (per post)",
            "type": "boolean",
            "description": "Enriches every post row with two things at once: (1) analytics - engagement rate, performance ranking, day of week, hour posted; (2) media details - carousel text, image dimensions, video info for posts with media. Requires 'Add author profile info' to be on so follower count is available for the engagement rate. Off by default. Billed at $0.002 per post.",
            "default": false
          },
          "include_comments": {
            "title": "Add comments (per comment)",
            "type": "boolean",
            "description": "Populates a separate 'top_comments' sub-dataset with comments per post (author, text, likes, posted date, reply count). Off by default. Billed at $0.001 per comment fetched.",
            "default": false
          },
          "max_comments_per_post": {
            "title": "Max comments per post (0 = all)",
            "minimum": 0,
            "type": "integer",
            "description": "0 = fetch every available comment on each post (default, uncapped). Enter a positive number to cap per-post comments. No hard ceiling. Each fetched comment is billed at $0.001, so a cap is a way to control cost if you do not need every comment.",
            "default": 0
          },
          "include_company_report": {
            "title": "Add company report (per company)",
            "type": "boolean",
            "description": "Adds one row per company URL to a 'company_summary' sub-dataset with posting cadence, best posting day and hour, content mix, top hashtags, top mentions, and company metadata (size, industry, headquarters, founded year, website, specialties). Off by default. Billed at $1.00 per company URL.",
            "default": false
          },
          "include_strategy_summary": {
            "title": "Add AI strategy summary (per company, LLM key required)",
            "type": "boolean",
            "description": "Adds a 3-paragraph AI-generated summary of each company's content strategy to the company report. Uses your own Anthropic API key (best cost-to-quality balance on Claude Haiku 4.5 - roughly $0.015 per company summary in LLM tokens paid directly to Anthropic). Off by default. Billed at $2.00 per company that received a summary.",
            "default": false
          },
          "anthropic_api_key": {
            "title": "Anthropic API key",
            "type": "string",
            "description": "Your Anthropic API key (starts with 'sk-ant-'). Required when 'Add AI strategy summary' is on. The key is stored encrypted and only used to call Anthropic's Claude Haiku 4.5 for the summary. Your token cost stays roughly $0.015 per company summary; you pay Anthropic directly for the tokens. Get a key at https://console.anthropic.com."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}