Preserve public career history as structured person data.
Submit one public person profile under /in/ and receive one dataset item when that record is accessible. Start separate Actor runs when a workflow contains multiple profile URLs.
Curly does not discover people by name, title, employer, or location. That boundary keeps URL extraction predictable and avoids mixing person identification with profile collection.
Map the person fields your workflow actually needs.
Fields reflect what is public when the request runs. Unavailable experience, education, network, or profile sections remain empty rather than being inferred.
| Fields | Purpose | Availability |
|---|---|---|
id, name, first_name, last_name | Stable profile identity and display name | When public |
url, input_url | Canonical source URL and submitted value | Included for successful results |
position, about, location, city, country_code | Public professional summary and location | When public |
current_company, experience | Current employer and public work history | When public |
educations_details, languages | Public education and language sections | When public |
followers, connections | Public audience and network counts | When public |
avatar, banner_image, profile_badges | Public profile media and badges | When public |
organizations, honors_and_awards, similar_profiles | Additional public sections and related profiles | When exposed by LinkedIn |
Review a career context response.
The representative response shows how current company, work history, and education remain nested instead of being flattened into ambiguous columns.
[
{
"id": "jane-doe",
"name": "Jane Doe",
"first_name": "Jane",
"last_name": "Doe",
"url": "https://www.linkedin.com/in/jane-doe",
"input_url": "https://www.linkedin.com/in/jane-doe/",
"position": "Founder at Example Labs",
"location": "Berlin, Germany",
"followers": 2345,
"connections": 500,
"current_company": {
"name": "Example Labs",
"company_id": "example-labs",
"link": "https://www.linkedin.com/company/example-labs"
},
"experience": [
{
"title": "Founder",
"company": "Example Labs",
"start_date": "2022",
"end_date": null
}
],
"educations_details": [
{
"school": "Example University",
"degree": "MSc",
"start_year": 2016,
"end_year": 2018
}
]
}
]Known profile extraction versus member authorization and people search.
Curly starts from a public profile URL you already have. Official integrations operate in approved member contexts, while people search products discover candidates from attributes.
| Option | Starting input | Access | Best for |
|---|---|---|---|
| Official LinkedIn Profile API | Authorized member context | Restricted LinkedIn product access | Approved applications working with authorized members |
| Curly free profile scraper | One known public profile | No account required | Testing a single public record in the browser |
| Curly profile scraper API | One known profile per run | Apify API token | Structured datasets, automation, schedules, and webhooks |
| People search API | Names, titles, companies, or filters | Provider specific | Discovering people when profile URLs are not already known |
Connect person records without losing provenance.
Use the canonical profile URL and profile ID as source keys, then route selected experience, education, organization, or audience fields downstream.
- Inspect one profile in the browser
See which career and identity fields are public before planning a batch.
- Configure profile collection on Apify
Test one known URL and connect repeated runs to schedules or webhooks.