Curly

LinkedIn Profile Scraper API for career context.

Convert known public profile URLs into structured person records for research, enrichment, and recurring data workflows.

  • One profile per run
  • Career history context
  • $1.40 per 1,000 results

Each Actor run accepts one profile URL or slug. Start separate runs when you need multiple profiles.

curl -X POST \
  "https://api.apify.com/v2/acts/curly~linkedin-profile-scraper/run-sync-get-dataset-items?format=json" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
  "profile": "https://www.linkedin.com/in/example-founder/"
}'

Keep the Apify token in a server environment variable. Never place it in public browser code.

Profile extraction for identified people, not people discovery.

  • Preserve career context from known profiles

    Turn each public profile URL into a normalized record with identity, current role, experience, education, location, and available audience context.

  • Keep profile extraction separate from discovery

    Collect people you have already identified without presenting a URL based extractor as a name, title, email, or contact search product.

  • Map nested person data into your workflow

    Use canonical profile IDs as source keys, then route only the public experience, education, organization, or network fields your process needs.

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.

FieldsPurposeAvailability
id, name, first_name, last_nameStable profile identity and display nameWhen public
url, input_urlCanonical source URL and submitted valueIncluded for successful results
position, about, location, city, country_codePublic professional summary and locationWhen public
current_company, experienceCurrent employer and public work historyWhen public
educations_details, languagesPublic education and language sectionsWhen public
followers, connectionsPublic audience and network countsWhen public
avatar, banner_image, profile_badgesPublic profile media and badgesWhen public
organizations, honors_and_awards, similar_profilesAdditional public sections and related profilesWhen 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.

OptionStarting inputAccessBest for
Official LinkedIn Profile APIAuthorized member contextRestricted LinkedIn product accessApproved applications working with authorized members
Curly free profile scraperOne known public profileNo account requiredTesting a single public record in the browser
Curly profile scraper APIOne known profile per runApify API tokenStructured datasets, automation, schedules, and webhooks
People search APINames, titles, companies, or filtersProvider specificDiscovering 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.

Ready to structure known public profiles?

Open the Actor to test one profile and connect career records to your data workflow.

Open API on Apify

Profile extraction questions for known public URLs.