{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Profile Scraper - People, Job Changes & B2B Leads",
    "description": "Scrape public LinkedIn profiles into B2B people data: current company, title where shown, location, experience, education, certifications, websites, followers and lead score. URLs or usernames, similar-profile discovery, job-change monitor. No login. Independent tool, not affiliated with LinkedIn.",
    "version": "0.1",
    "x-build-id": "lRUatGfteWTlHtREX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~linkedin-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-linkedin-profile-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/scrapesage~linkedin-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-linkedin-profile-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/scrapesage~linkedin-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-linkedin-profile-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": {
          "profileUrls": {
            "title": "Profile URLs or usernames",
            "type": "array",
            "description": "LinkedIn profile URLs (https://www.linkedin.com/in/<username>, any country subdomain, with or without https://) or bare usernames. The primary, fastest, most reliable input - paste a list exported from your CRM, Sales Navigator, or a spreadsheet.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (request list)",
            "type": "array",
            "description": "Alternative to Profile URLs - a standard Apify request list of LinkedIn profile URLs, including \"Link remote text file\" and file upload. Useful when chaining from another actor or integration.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "discoverRelated": {
            "title": "Discover related profiles",
            "type": "boolean",
            "description": "Expand each seed profile into the people LinkedIn lists in its \"Other similar profiles\" box (shown as \"People also viewed\" to members) - a reliable way to snowball a small seed list into similar prospects (same role, network or industry). One level deep, bounded by Max related per profile and Max profiles.",
            "default": false
          },
          "maxRelatedPerProfile": {
            "title": "Max related per profile",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "With Discover related profiles on, how many people to take from each seed profile's similar-profiles box (LinkedIn shows up to about 20) before the overall Max profiles cap is applied. Has no effect when discovery is off.",
            "default": 20
          },
          "maxProfiles": {
            "title": "Max profiles",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of profile records to return. Keep modest for a fast run; set 0 for no limit (explicit opt-in).",
            "default": 100
          },
          "includeExperience": {
            "title": "Include work experience",
            "type": "boolean",
            "description": "Include the work-experience list: every position (title, company, company URL, dates, duration, location, description) when the profile shows its Experience section, otherwise the current and past employers LinkedIn lists in the page data. Same page - no extra request.",
            "default": true
          },
          "includeEducation": {
            "title": "Include education",
            "type": "boolean",
            "description": "Include the education list (school, school URL, degree, field of study, years, description). Same page - no extra request.",
            "default": true
          },
          "includeActivity": {
            "title": "Include recent activity",
            "type": "boolean",
            "description": "Also extract the member's own recent posts and reposts (text, link, date, likes and comments where shown) and the Recent posts view columns. Same page - no extra request.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (job-change detection)",
            "type": "boolean",
            "description": "Re-scan the same profiles on a schedule and emit a record ONLY when something changed since the last run - a new job, a title change, a company change or a headline change. Perfect for sales/recruiting buying-signals. Works alongside Apify Schedules (the schedule controls WHEN it runs; monitor mode controls WHAT is emitted). State is stored in a named key-value store.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that remembers each profile's last snapshot for monitor mode. Reuse the same name across scheduled runs.",
            "default": "linkedin-profile-monitor"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many profiles to fetch in parallel. Lower = gentler on rate limits and steadier; higher = faster.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep the default: the actor opens each profile through Apify Proxy, datacenter first and residential when LinkedIn refuses the request. A country, other proxy groups or your own proxy URLs are used exactly as you set them.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste profile links or usernames (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file holding them (shared as \"Anyone with the link\"). CSV exports work: the actor reads the column whose header names the LinkedIn link, URL, profile or username. PDF, Excel and image files are refused with a note on the run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}