{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Posts Scraper ✅ NO COOKIES",
    "description": "Scrape every post from any LinkedIn profile or company page: post text, media, reactions, comments, shares, reposts, author details, and mentions. No LinkedIn account or cookies needed. Auto-pagination handles full feeds, with batch scraping across many profiles in one run.",
    "version": "1.0",
    "x-build-id": "k9Kg6g2hVKTbglwHl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atomus~linkedin-posts-scraper-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atomus-linkedin-posts-scraper-pro",
        "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/atomus~linkedin-posts-scraper-pro/runs": {
      "post": {
        "operationId": "runs-sync-atomus-linkedin-posts-scraper-pro",
        "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/atomus~linkedin-posts-scraper-pro/run-sync": {
      "post": {
        "operationId": "run-sync-atomus-linkedin-posts-scraper-pro",
        "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": {
          "profiles": {
            "title": "👤 LinkedIn usernames or profile URLs",
            "type": "array",
            "description": "LinkedIn profile URLs or usernames. Examples: https://www.linkedin.com/in/satyanadella/ or just satyanadella",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "companies": {
            "title": "🏢 LinkedIn company usernames or company URLs",
            "type": "array",
            "description": "LinkedIn company URLs or usernames. Examples: https://www.linkedin.com/company/microsoft/ or just microsoft",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxPosts": {
            "title": "💯 Max posts per profile / company",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of posts to extract per profile or company. Set 0 for unlimited, which scrapes the target's entire post history and bills every post it returns. A profile or company that comes back with no posts still bills $0.005 for the lookup that checked it. Why there is a minimum: one request is one lookup, and that lookup does the same work whether it comes back full, with a single row, or empty. The minimum covers the request itself, which is what keeps thin targets worth running instead of being refused outright. Requests that fail are free.",
            "default": 0
          },
          "postedLimit": {
            "title": "🕒 Posted within",
            "enum": [
              "none",
              "24h",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only scrape posts published within this time period.",
            "default": "none"
          },
          "postedAfterDate": {
            "title": "📅 Posted after date",
            "type": "string",
            "description": "Only scrape posts published after this date. Supports ISO format (e.g. 2025-01-01) or timestamps."
          },
          "postedBeforeDate": {
            "title": "📅 Posted before date",
            "type": "string",
            "description": "Your results hold only posts published before this date, so you can continue a run that stopped without paying twice for reactions, comments and people. Newer posts still have to be read to reach your range, since LinkedIn has no way to start a list of posts at a date, and reading a post has a real cost, so they are billed as posts ($2/1k), without reactions, comments or people, and kept apart from your results in the run's key-value store (record POSTS_OUTSIDE_YOUR_DATES). A date (2026-07-01) or the posted_at of the oldest post you already have."
          },
          "contentType": {
            "title": "🎬 Content type",
            "enum": [
              "all",
              "videos",
              "images",
              "documents",
              "jobs"
            ],
            "type": "string",
            "description": "Only scrape posts with specific content types.",
            "default": "all"
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "How to sort results.",
            "default": "date"
          },
          "latestPostOnly": {
            "title": "1️⃣ Latest post only",
            "type": "boolean",
            "description": "If enabled, only fetches the most recent post for each profile/company. Useful for checking if there are new posts before running a full scrape.",
            "default": false
          },
          "includeSharedPosts": {
            "title": "💬 Include quote posts",
            "type": "boolean",
            "description": "Include posts that someone shared and added their own text on top. For example, when a user reposts an article and writes their opinion about it. Disable this to only get original posts.",
            "default": true
          },
          "includeReposts": {
            "title": "🔁 Include simple reposts",
            "type": "boolean",
            "description": "Include posts that someone simply reposted as-is, without adding any text of their own. These are the 'repost' button shares with no original commentary. Disable this to only get original posts and quote posts.",
            "default": true
          },
          "includeReactions": {
            "title": "👍 Include reactions",
            "type": "boolean",
            "description": "Scrape who reacted to each post, with reaction type, name, headline and profile URL. Each reaction is a separate row and is billed separately from the post.",
            "default": false
          },
          "maxReactionsPerPost": {
            "title": "👍 Max reactions per post",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum reactions to return per post. 0 means all of them.",
            "default": 0
          },
          "includeComments": {
            "title": "💬 Include comments",
            "type": "boolean",
            "description": "Scrape the comments on each post, with text, author, date and whether the author of the post wrote it. Each comment is a separate row and is billed separately from the post.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "💬 Max comments per post",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum comments to return per post. 0 means all of them.",
            "default": 0
          },
          "includePersonDetails": {
            "title": "💼 Include person profiles",
            "type": "boolean",
            "description": "Adds one 'person_profile' row per person who reacted or commented, with their public profile URL, name, headline, current job title and company, and the rest of what their profile lists about that job. Needs reactions or comments turned on, and matches their rows on linkedin_url. Each person is billed once per run, including a person who was looked up and not found.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}