{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Profile Scraper Without Login: Bulk URLs + Work Email",
    "description": "LinkedIn profile scraper without login: paste a list of public profile URLs and get one spreadsheet row per person - name, job title, company, location, follower count, and an optional work email guess. Built for sales and recruiting teams. Nothing found, nothing charged.",
    "version": "1.0",
    "x-build-id": "mnohNUnr3NaOqoW0D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~linkedin-profile-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-linkedin-profile-lookup",
        "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/accountable_eel~linkedin-profile-lookup/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-linkedin-profile-lookup",
        "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/accountable_eel~linkedin-profile-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-linkedin-profile-lookup",
        "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": [
          "profileUrls"
        ],
        "properties": {
          "profileUrls": {
            "title": "LinkedIn profiles to look up",
            "type": "array",
            "description": "One profile per line. Paste the full profile link, or just the part after /in/. Accepted formats: https://www.linkedin.com/in/williamhgates, linkedin.com/in/williamhgates, williamhgates. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "deltaMode": {
            "title": "Flag job changes since the last run",
            "type": "boolean",
            "description": "Turns a scheduled list into a job-change monitor. Each profile's current company, job title and location are remembered between runs; every row still comes back, with 'Job change since last run', 'What changed', 'Previous company' and 'Previous job title' filled in, so you filter on the change. The first run records everyone as first-seen. A field LinkedIn hides on a given run is never reported as a change. Billing is unchanged: one charge per profile found.",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Leave empty to use one shared memory for this account. Type a name (for example 'sales-accounts' or 'candidates-q4') to keep two schedules of this actor from overwriting each other's memory of the same person.",
            "default": ""
          },
          "flatten": {
            "title": "Spreadsheet columns (one row = one line)",
            "type": "boolean",
            "description": "Adds the first three roles and the first school as plain text columns (Role 1: company, Role 1: title, Role 1: start, and so on), so a Google Sheets, Clay, Excel or n8n export needs no JSON parsing. The nested 'Current roles listed' and 'Schools listed' columns stay as they are. Pick the 'Spreadsheet' view in the Output tab for just those columns.",
            "default": false
          },
          "findEmail": {
            "title": "Guess each person's work email",
            "type": "boolean",
            "description": "Reads the current employer's public LinkedIn company page for its website domain (once per company per run), checks that the domain can receive mail, and fills 'Email guess' with the most likely address plus 2 alternatives. Guessed from the company's email pattern, not verified at the mailbox. No extra charge: still one charge per profile found. Adds one company-page request per distinct employer.",
            "default": false
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "profileUrl",
                "publicId",
                "fullName",
                "headline",
                "location",
                "currentTitle",
                "currentCompany",
                "currentCompanyUrl",
                "experience",
                "education",
                "followers",
                "connections",
                "profileImageUrl",
                "source",
                "masked",
                "changed",
                "changeType",
                "previousCompany",
                "previousTitle",
                "monitorFirstSeenAt",
                "experience1Company",
                "experience1Title",
                "experience1Start",
                "experience2Company",
                "experience2Title",
                "experience2Start",
                "experience3Company",
                "experience3Title",
                "experience3Start",
                "education1School",
                "education1Degree",
                "companyDomain",
                "emailGuess",
                "emailCandidates",
                "emailDomainStatus",
                "mxProvider",
                "mailboxVerified"
              ],
              "enumTitles": [
                "Profile link",
                "Public profile ID",
                "Name",
                "Headline",
                "Location",
                "Current job title",
                "Current company",
                "Current company page",
                "Current roles listed",
                "Schools listed",
                "Followers",
                "Connections",
                "Profile photo",
                "Read from",
                "LinkedIn hid part of this page",
                "Job change since last run",
                "What changed",
                "Previous company",
                "Previous job title",
                "Monitored since",
                "Role 1: company",
                "Role 1: title",
                "Role 1: start",
                "Role 2: company",
                "Role 2: title",
                "Role 2: start",
                "Role 3: company",
                "Role 3: title",
                "Role 3: start",
                "School 1",
                "School 1: degree",
                "Company domain",
                "Email guess",
                "Other likely addresses",
                "Email domain status",
                "Mail provider",
                "Mailbox verified"
              ]
            },
            "default": [
              "profileUrl",
              "publicId",
              "fullName",
              "headline",
              "location",
              "currentTitle",
              "currentCompany",
              "currentCompanyUrl",
              "experience",
              "education",
              "followers",
              "connections",
              "profileImageUrl",
              "source",
              "masked",
              "changed",
              "changeType",
              "previousCompany",
              "previousTitle",
              "monitorFirstSeenAt",
              "experience1Company",
              "experience1Title",
              "experience1Start",
              "experience2Company",
              "experience2Title",
              "experience2Start",
              "experience3Company",
              "experience3Title",
              "experience3Start",
              "education1School",
              "education1Degree",
              "companyDomain",
              "emailGuess",
              "emailCandidates",
              "emailDomainStatus",
              "mxProvider",
              "mailboxVerified"
            ]
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}