{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn People Search - Find Profiles by Title & Location",
    "description": "Find LinkedIn people by job title and location without cookies or a login. Pay per profile you actually receive — never per search page. Built-in cross-run deduplication (no database required) and freshness windows that surface profiles updated in the last week or month.",
    "version": "0.1",
    "x-build-id": "oFqS4ITzsIjWGoEif"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/constructive_calm~linkedin-people-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-constructive_calm-linkedin-people-finder",
        "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/constructive_calm~linkedin-people-finder/runs": {
      "post": {
        "operationId": "runs-sync-constructive_calm-linkedin-people-finder",
        "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/constructive_calm~linkedin-people-finder/run-sync": {
      "post": {
        "operationId": "run-sync-constructive_calm-linkedin-people-finder",
        "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": {
          "jobTitles": {
            "title": "Job titles",
            "type": "array",
            "description": "Job titles to search for, e.g. `Registered Nurse`, `Software Engineer`. Combined with every location below. Leave empty if you are using 'Search queries' instead.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, regions or countries, e.g. `Dubai`, `London`, `United Kingdom`. Combined with every job title above.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries (advanced)",
            "type": "array",
            "description": "Raw search queries for full control, e.g. `\"Head of Talent\" \"Berlin\" -recruiter`. Runs before the title × location combinations. `site:linkedin.com/in` is added automatically if you omit it.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Scrape mode",
            "enum": [
              "full",
              "short"
            ],
            "type": "string",
            "description": "Short returns name, headline, current title and company straight from the public search index. Full additionally opens each profile for the about section, work history, education and follower counts. If a profile cannot be opened you are charged the Short price, never the Full price.",
            "default": "full"
          },
          "freshness": {
            "title": "Freshness window",
            "enum": [
              "any",
              "past_month",
              "past_week"
            ],
            "type": "string",
            "description": "Restrict results to profiles re-indexed recently. Because a profile gets re-crawled when it changes — new job title, 'Open to work', updated headline — this doubles as a job-change signal. Pair with deduplication and a schedule to get a standing feed of people who just moved.",
            "default": "any"
          },
          "maxProfiles": {
            "title": "Maximum profiles",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Hard cap on profiles returned in this run. You are charged per profile delivered.",
            "default": 100
          },
          "maxSerpCalls": {
            "title": "Maximum search pages",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Safety cap on how many search pages the run may fetch. Each page yields roughly 10 profiles. Raise this if a broad search stops before reaching your profile limit. You are NOT charged for search pages — this exists purely to bound run time.",
            "default": 50
          },
          "dedupeMode": {
            "title": "Deduplication",
            "enum": [
              "off",
              "auto",
              "exclude_list"
            ],
            "type": "string",
            "description": "Automatic mode stores the profiles it has already given you in your own Apify key-value store, so every later run returns only people you have not seen. No MongoDB or external database required. Use Off if you already deduplicate in your own ATS or CRM.",
            "default": "off"
          },
          "dedupeStoreName": {
            "title": "Deduplication store name",
            "type": "string",
            "description": "Only used when Deduplication is 'Automatic'. Runs sharing a name share their memory of who has already been returned — use one name per sourcing project. The store lives in your own Apify account.",
            "default": "linkedin-people-finder-seen"
          },
          "excludeProfileUrls": {
            "title": "Profiles to exclude",
            "type": "array",
            "description": "Only used when Deduplication is 'Exclude list'. LinkedIn profile URLs or slugs you already have — these are skipped before any profile is opened, so they cost you nothing.",
            "items": {
              "type": "string"
            }
          },
          "expandSynonyms": {
            "title": "Expand job title synonyms and nearby locations",
            "type": "boolean",
            "description": "Also search common variants of your job titles (e.g. `Software Engineer` → `Software Developer`, `Backend Engineer`) and nearby locations (e.g. `Dubai` → `Sharjah`, `Abu Dhabi`). Finds substantially more people, uses more search pages.",
            "default": false
          },
          "useResidentialFallback": {
            "title": "Use residential proxy fallback",
            "type": "boolean",
            "description": "Only affects Full mode. After 3 failed attempts on a profile, retry through a residential proxy. Raises the share of profiles successfully opened, at higher cost on those retries only.",
            "default": false
          },
          "maxRetriesPerProfile": {
            "title": "Max retries per profile",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Only affects Full mode. How many attempts before falling back to the short profile. 5 is the validated sweet spot.",
            "default": 5
          },
          "concurrency": {
            "title": "Concurrent profile fetches",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Only affects Full mode. How many profiles to open at once. LinkedIn rate-limits parallel requests hard, and we measured the cost on live runs: 1 opens ~98% of profiles, 2 drops to ~83%, 3 to ~78%, and 8 collapses to ~15%. Leave this at 1 unless you would genuinely rather have a faster run than a complete one — raising it returns fewer opened profiles, and you are not charged the full price for the ones that fail.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy used for opening profiles in Full mode. Apify datacenter proxy is the default and is the cheapest option that works.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": []
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}