{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Post Scraper",
    "description": "Scrape public LinkedIn posts from company pages, profiles, post links, searches and keywords with no login or cookies. Full text, author, media, reactions and comments. Date and type filters, auto proxy fallback. Export JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "5xFI9ZfiaJMvDTePs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_minds~linkedin-post-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_minds-linkedin-post-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/data_minds~linkedin-post-scraper/runs": {
      "post": {
        "operationId": "runs-sync-data_minds-linkedin-post-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/data_minds~linkedin-post-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-data_minds-linkedin-post-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "🔗 Source URLs",
            "minItems": 1,
            "type": "array",
            "description": "One LinkedIn URL per line. Supported: post URLs, profile URLs (linkedin.com/in/...), company / school / showcase pages, and content-search URLs (the keywords in the URL are searched). Bulk input is fine.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "🔎 Keywords",
            "type": "array",
            "description": "Optional. Topics or hashtags to find public LinkedIn posts about, one per line (for example: generative ai, #worktrendindex). Each keyword counts as one source.",
            "items": {
              "type": "string"
            }
          },
          "limitPerSource": {
            "title": "🔢 Limit per source",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of posts per URL or keyword. When left empty, 10 posts per URL or keyword are collected."
          },
          "scrapeUntil": {
            "title": "📅 Scrape until date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(hour|day|week|month|year)s?$|^(\\d+)\\s*(h|d|w|mo|y)$",
            "type": "string",
            "description": "Only keep posts published on or after this date. Pick a date (YYYY-MM-DD) or a relative value such as 7 days, 2 weeks, 3 months."
          },
          "deepScrape": {
            "title": "✅ Scrape additional information",
            "type": "boolean",
            "description": "Open every post page to collect comments, exact publish time, document info and related posts by the same author. Turn off for a faster run with fewer details per post.",
            "default": true
          },
          "fetchDocumentDetails": {
            "title": "✅ Fetch document details",
            "type": "boolean",
            "description": "For document / carousel posts: collect every page as a full-resolution image plus the text transcript. When off, only the cover page images are returned.",
            "default": false
          },
          "numComments": {
            "title": "🔢 Number of comments to fetch",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper bound of comments per post. Logged-out visitors can see about 10 comments per post; every record reports commentsAvailable and commentsTruncated.",
            "default": 5
          },
          "numLikes": {
            "title": "🔢 Number of likes to fetch",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Kept for compatibility with other LinkedIn scrapers. The list of people who liked a post is not visible to logged-out visitors, so likers is always an empty list; total reaction counts are still returned.",
            "default": 0
          },
          "rawData": {
            "title": "✅ Get raw data (Advanced)",
            "type": "boolean",
            "description": "Attach the unprocessed post markup and structured metadata under the raw field of every record. Useful when you look for a value that is not in the normal output.",
            "default": false
          },
          "discoverMorePosts": {
            "title": "✅ Discover more posts",
            "type": "boolean",
            "description": "A company or profile page shows only its newest posts. Keep this on to also collect older posts by the same author until the limit per source is reached.",
            "default": true
          },
          "includeReposts": {
            "title": "✅ Include reposts",
            "type": "boolean",
            "description": "Keep posts that the author reposted from someone else. Turn off to return only original posts.",
            "default": true
          },
          "includeProfileActivity": {
            "title": "✅ Include profile activity",
            "type": "boolean",
            "description": "Profile pages also list posts by other people that the person reposted or reacted to. Turn on to include those as well.",
            "default": false
          },
          "includeGated": {
            "title": "✅ Include login-only posts",
            "type": "boolean",
            "description": "Some posts are shown only to logged-in members. When on, such post URLs you entered directly are still returned as a short record with status gated instead of being skipped.",
            "default": true
          },
          "postTypes": {
            "title": "🎯 Post types",
            "type": "array",
            "description": "Keep only these post types. Empty means all types.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "image",
                "video",
                "article",
                "document",
                "reshare",
                "unknown"
              ],
              "enumTitles": [
                "Text",
                "Image",
                "Video",
                "Article",
                "Document",
                "Reshare",
                "Unknown"
              ]
            }
          },
          "authorTypes": {
            "title": "🎯 Author types",
            "type": "array",
            "description": "Keep only posts written by people or only posts written by companies. Empty means both.",
            "items": {
              "type": "string",
              "enum": [
                "person",
                "company"
              ],
              "enumTitles": [
                "Person",
                "Company"
              ]
            }
          },
          "minReactions": {
            "title": "🔢 Minimum reactions",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer reactions than this."
          },
          "minComments": {
            "title": "🔢 Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer comments than this."
          },
          "mustContain": {
            "title": "🎯 Text must contain",
            "type": "array",
            "description": "Keep a post only if its text contains at least one of these phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "mustNotContain": {
            "title": "🎯 Text must not contain",
            "type": "array",
            "description": "Skip a post if its text contains any of these phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "🎯 Hashtags filter",
            "type": "array",
            "description": "Keep a post only if it uses at least one of these hashtags, with or without the # sign.",
            "items": {
              "type": "string"
            }
          },
          "saveMedia": {
            "title": "✅ Download media",
            "type": "boolean",
            "description": "Save images, the best video rendition and document pages to the run's key-value store. Each media item in the output then gets a saved.location link.",
            "default": false
          },
          "maxMediaBytes": {
            "title": "🔢 Max bytes per media file",
            "minimum": 1,
            "type": "integer",
            "description": "Media files larger than this are skipped when Download media is on. Default is 50 MB.",
            "default": 52428800
          },
          "flattenOutput": {
            "title": "✅ Flatten output",
            "type": "boolean",
            "description": "Write nested objects as dotted keys (author.name, engagement.reactions). Handy for CSV and spreadsheets.",
            "default": false
          },
          "maxConcurrency": {
            "title": "⚡ Max concurrency",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "How many posts are processed at the same time. Higher is faster; lower is gentler on the site.",
            "default": 4
          },
          "requestDelaySeconds": {
            "title": "⏳ Delay between requests",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Seconds to wait between two requests to the same site. A small random jitter is added automatically.",
            "default": 2
          },
          "maxRetries": {
            "title": "🔁 Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times a blocked or failed request is retried (with increasing wait time) before it is given up.",
            "default": 3
          },
          "requestTimeoutSeconds": {
            "title": "⏳ Request timeout",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Seconds to wait for one page before the request counts as failed.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Optional. The default works for most runs. Pick a proxy setting here only if you want to choose one yourself."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}