{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Keyword & Hashtag Post Discovery Scraper",
    "description": "Search LinkedIn posts by keyword or hashtag with filters for date, author type, industry, connection degree, mentions, and minimum reactions. Requires a LinkedIn session cookie.",
    "version": "1.0",
    "x-build-id": "zL8UURqaufW1YxiHA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vexaloom-labs~linkedin-keyword-and-hashtag-post-discovery/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vexaloom-labs-linkedin-keyword-and-hashtag-post-discovery",
        "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/vexaloom-labs~linkedin-keyword-and-hashtag-post-discovery/runs": {
      "post": {
        "operationId": "runs-sync-vexaloom-labs-linkedin-keyword-and-hashtag-post-discovery",
        "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/vexaloom-labs~linkedin-keyword-and-hashtag-post-discovery/run-sync": {
      "post": {
        "operationId": "run-sync-vexaloom-labs-linkedin-keyword-and-hashtag-post-discovery",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "auto",
              "search",
              "postUrls"
            ],
            "type": "string",
            "description": "What to run. 'auto' searches when searchQuery/searchQueries are set and enriches when postUrls are set (both can run together).",
            "default": "auto"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Keyword, phrase, or hashtag to find in public LinkedIn posts. Examples: 'artificial intelligence', '\"product launch\"', '#MachineLearning'. (mode=search/auto)"
          },
          "searchQueries": {
            "title": "Search Queries (batch)",
            "type": "array",
            "description": "Additional queries to run in the same run; each is searched independently, duplicates are delivered once. Combine with Search Query. (mode=search/auto)",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "LinkedIn post or article URLs to enrich directly (activity, share, ugcPost, feed/update, /pulse/ links and country subdomains). (mode=postUrls/auto)",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "recency",
              "date_posted"
            ],
            "type": "string",
            "description": "How to order the posts that were found. 'relevance' keeps the search engine's order; 'recency' sorts the found posts by date (newest first).",
            "default": "relevance"
          },
          "datePosted": {
            "title": "Date Posted",
            "enum": [
              "",
              "r86400",
              "r604800",
              "r2592000"
            ],
            "type": "string",
            "description": "Only keep posts from this time window.",
            "default": ""
          },
          "postedAfter": {
            "title": "Posted After",
            "type": "string",
            "description": "Only keep posts published on or after this date (YYYY-MM-DD). Leave empty to disable.",
            "default": ""
          },
          "postedBefore": {
            "title": "Posted Before",
            "type": "string",
            "description": "Only keep posts published on or before this date (YYYY-MM-DD). Leave empty to disable.",
            "default": ""
          },
          "authorType": {
            "title": "Author Type",
            "enum": [
              "",
              "PERSON",
              "COMPANY"
            ],
            "type": "string",
            "description": "Keep only posts written by a person or by a company page. Applied after each post is opened, so a post whose author type cannot be determined is kept.",
            "default": ""
          },
          "contentType": {
            "title": "Content Types",
            "type": "array",
            "description": "Keep only these post types: articles (LinkedIn articles), posts (text/reposts/polls/events), documents (PDF/PPTX document cards), videos, images.",
            "default": [
              "articles",
              "posts",
              "documents",
              "videos",
              "images"
            ],
            "items": {
              "type": "string"
            }
          },
          "minReactions": {
            "title": "Minimum Reactions",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Keep only posts with at least this many reactions. Posts whose reaction count is unknown are skipped when this is above 0.",
            "default": 0
          },
          "minComments": {
            "title": "Minimum Comments",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Keep only posts with at least this many comments. Posts whose comment count is unknown are skipped when this is above 0.",
            "default": 0
          },
          "excludeReposts": {
            "title": "Exclude Reposts",
            "type": "boolean",
            "description": "When enabled, skip posts that repeat someone else's content.",
            "default": false
          },
          "includeUnmatched": {
            "title": "Also Return Loose Matches",
            "type": "boolean",
            "description": "When enabled, posts that do not show every word of your query are also returned, marked keywordMatch: false. Useful for hashtags.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "pt",
              "it"
            ],
            "type": "string",
            "description": "Preferred interface language used when opening each post page (affects LinkedIn's rendered text).",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "enum": [
              "auto",
              "us",
              "gb",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "nl",
              "br",
              "in",
              "ca",
              "au",
              "mx",
              "jp",
              "sg",
              "ae",
              "sa",
              "za",
              "ng",
              "pk",
              "id",
              "ph",
              "my",
              "pl",
              "se",
              "ch",
              "at",
              "be",
              "dk",
              "ie"
            ],
            "type": "string",
            "description": "Prefer LinkedIn posts indexed on this country's LinkedIn domain (site:xx.linkedin.com). 'auto' uses linkedin.com worldwide.",
            "default": "auto"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of posts to return per run, after filters. The search index holds fewer posts for narrow queries.",
            "default": 25
          },
          "hydratePosts": {
            "title": "Open Each Post Page",
            "type": "boolean",
            "description": "When enabled, each found post is opened so the record carries the full text, author, date, engagement counts and top comments. Turn off for faster runs with link + snippet only.",
            "default": true
          },
          "includeVideoTranscript": {
            "title": "Include Video Transcripts",
            "type": "boolean",
            "description": "When enabled and a video post exposes a transcript on its public page, the transcript is added to the record.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor Mode (only new posts)",
            "type": "boolean",
            "description": "When enabled, only posts that were not delivered by an earlier run with the same input are returned. Ideal for schedules.",
            "default": false
          },
          "emitNoResultsMarker": {
            "title": "Emit No-Results Marker",
            "type": "boolean",
            "description": "When enabled and a clean search finds nothing, push one marker record ({searchQuery, noResults: true}) so zero matches can be told apart from a failed run.",
            "default": true
          },
          "mentions": {
            "title": "Extra Search Terms",
            "type": "array",
            "description": "Additional words added to every search query, for example a company or person name.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "mentionsCompany": {
            "title": "Mentions Company",
            "type": "string",
            "description": "Company name added to the search query. Numeric LinkedIn IDs cannot be used without a session and are ignored (a note is added to the run status).",
            "default": ""
          },
          "mentionsPerson": {
            "title": "Mentions Person",
            "type": "string",
            "description": "Person name added to the search query. Numeric LinkedIn IDs cannot be used without a session and are ignored (a note is added to the run status).",
            "default": ""
          },
          "talksAbout": {
            "title": "Talks About (Topics / Hashtags)",
            "type": "array",
            "description": "Topics or hashtags added to the search query; each value becomes #topic. Values with a leading # are accepted as-is.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDocumentDetails": {
            "title": "Include Document Details",
            "type": "boolean",
            "description": "For document (PDF/PPTX) posts, also fetch the per-page transcript and page-image URLs in addition to the document URL and page count.",
            "default": false
          },
          "includeRepostCounts": {
            "title": "Include Repost Counts",
            "type": "boolean",
            "description": "Last-resort fallback: if the richer public guest layout was not obtained for a post, retry a few more times to catch the repost/share counts. Normally unnecessary when the guest session is active.",
            "default": false
          },
          "enrichSdui": {
            "title": "Enrich From Public Guest Session",
            "type": "boolean",
            "description": "Use LinkedIn's anonymous public guest session (an ephemeral cookie issued by the site, like a normal browser) to read the richer public post layout. This adds reaction-type breakdowns, up to ~18 comments with profile links, and repost counts when available. No user account or credentials are involved.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}