LinkedIn Profile Scraper API - Real-Time Data avatar

LinkedIn Profile Scraper API - Real-Time Data

Pricing

from $1.09 / 1,000 successful profiles

Go to Apify Store
LinkedIn Profile Scraper API - Real-Time Data

LinkedIn Profile Scraper API - Real-Time Data

Scrape LinkedIn profiles from URLs: names, job titles, companies, experience, education, skills, location, followers and connections. Get structured JSON for CRM enrichment, recruiting and lead generation. Run in Apify Console or use the real-time API. Pay per successful profile.

Pricing

from $1.09 / 1,000 successful profiles

Rating

0.0

(0)

Developer

VirAP

VirAP

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

What does LinkedIn Profile Scraper API do?

LinkedIn Profile Scraper API extracts structured professional profile data from a LinkedIn profile URL. Get names, headlines, job titles, companies, work experience, education, skills, location, followers and connections for CRM enrichment, recruiting research and lead enrichment.

Try one profile in Apify Console, download the result as JSON, CSV or Excel, or connect the Actor to your application through the API. Standard runs process one profile URL and finish; the standby server supports on-demand HTTP requests.

Try a ready-made workflow: Enrich a LinkedIn profile for CRM. Copy the example, replace its sample URL, and export the profile fields you need.

Why use this LinkedIn profile scraper?

  • Enrich CRM contacts: turn an existing LinkedIn profile URL into professional and company information.
  • Research candidates: inspect available roles, work history, education and skills in a consistent JSON structure.
  • Build sales workflows: combine job titles, company links and locations with your own lead data.
  • Automate data collection: use Apify API access, saved tasks, schedules, integrations and run monitoring.

You provide a profile URL. This Actor does not search LinkedIn for people by name, job title or company, and it does not promise email addresses or phone numbers.

How to scrape a LinkedIn profile

  1. Open the Actor's Input tab in Apify Console.
  2. Paste one personal LinkedIn profile URL in the https://www.linkedin.com/in/... format. You can use the prefilled example for your first test.
  3. Select Start and wait for the run to finish.
  4. Open Output to inspect the profile. Use Export to download JSON, CSV or Excel.

No LinkedIn cookie or LinkedIn password is requested in the input form. For API integrations, authenticate to Apify with your own Apify token.

Input

The Input tab describes the current input schema. Standard runs accept one field:

FieldRequiredDescription
profile_urlYesAbsolute LinkedIn personal profile URL containing /in/. Company pages and search URLs are not supported inputs.
{
"profile_url": "https://www.linkedin.com/in/xavier-hen"
}

Each standard run processes one profile URL. To enrich multiple contacts, run the Actor once per URL or send individual requests to its standby API. An array of URLs is not an accepted input.

Output: structured LinkedIn profile data

A successful standard run writes one profile object to the default dataset. The synchronous dataset API returns an array containing that object. You can download the dataset in JSON, HTML, CSV or Excel; JSON preserves nested experience, education and skill data.

The shortened example below uses illustrative values. Its field names and nesting match the Actor's returned profile structure:

{
"linkedin_profile_handle": "example",
"first_name": "Alex",
"last_name": "Example",
"full_name": "Alex Example",
"headline": "Product and engineering leader",
"linkedin_profile_url": "https://www.linkedin.com/in/example",
"profile_country": "FR",
"location": "France",
"job_title": "CTO",
"company_name": "Example Company",
"linkedin_company_url": "https://www.linkedin.com/company/123456",
"number_connections": 500,
"number_followers": 1141,
"open_to_work": false,
"languages": ["English", "French"],
"skills": [{"name": "SaaS Architecture"}],
"experiences": [{
"title": "CTO",
"company_name": "Example Company",
"date": "Apr 2022 - Present",
"job_contract_type": "Self-employed"
}],
"education": [{
"school_name": "Example University",
"degree_name": "Master's degree",
"field_of_study": "Computer Science",
"date": "2010 - 2015"
}],
"extracted_at": "2026-10-17T13:57:20.266Z"
}

Main output fields

DataReturned fields
Identity and profilefull_name, first_name, last_name, headline, summary, linkedin_profile_handle, linkedin_profile_url, profile_image_url
Current role and companyjob_title, company_name, linkedin_company_url, linkedin_company_id
Work historyexperiences[], including available titles, companies, dates, locations, contract types and work arrangements
Educationeducation[], school_name, linkedin_school_url
Skills and languagesskills[], languages[]
Locationlocation, profile_country
Audience and statusnumber_followers, number_connections, open_to_work
Previous rolepast_company_name, past_job_title, past_linkedin_company_url, past_linkedin_company_id
Additional identifierslinkedin_profile_id, sales_navigator_profile_id, past_sales_navigator_company_id
Other history and metadatavolunteer_experiences[], extracted_at

Fields depend on profile availability. Some values can be missing, empty or null. Multiple current positions may appear in experiences; the top-level company field can summarize more than one position. The extraction timestamp records when the response was produced, rather than guaranteeing every source field changed at that moment.

Pricing: how much does LinkedIn profile enrichment cost?

The Actor uses Pay Per Event pricing for successful profile enrichment.

Apify discount tierPrice per 1,000 successful profiles
No discount$1.49
Bronze$1.39
Silver$1.29
Gold$1.09

For example, 100 successful profiles cost $0.149 at the listed no-discount event rate. Invalid URLs, profiles not found, rate limits, timeouts and server errors are not billed as successful profile events. Check the live Pricing tab for current rates, plan discounts and applicable charges. Use a maximum cost per run when testing.

Standard runs: the listed profile-event rate includes Apify platform usage under this Actor's current pricing settings. Standby API: Apify charges platform usage in addition to profile-event charges, including the resources used while the server is active. A failed enrichment has no successful-profile event charge, but Standby platform usage can still apply. Discount eligibility is determined by Apify; it is not a promise tied to a particular plan name.

LinkedIn profile scraping API

Standard API: run once and return the dataset

Use the Apify synchronous endpoint to submit one URL and receive the profile dataset. Store the token in the APIFY_TOKEN environment variable in your server-side environment.

curl -X POST \
'https://api.apify.com/v2/actors/virap~real-time-linkedin-profile-scraper-api/run-sync-get-dataset-items?timeout=120&maxTotalChargeUsd=0.02' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"profile_url":"https://www.linkedin.com/in/xavier-hen"}'

The response is a JSON array of dataset items. For longer workflows, use the Actor's API tab to start a run asynchronously and retrieve its dataset after completion.

Python example

import os
import requests
response = requests.post(
"https://api.apify.com/v2/actors/virap~real-time-linkedin-profile-scraper-api/run-sync-get-dataset-items",
params={"timeout": 120, "maxTotalChargeUsd": 0.02},
headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
json={"profile_url": "https://www.linkedin.com/in/xavier-hen"},
timeout=130,
)
response.raise_for_status()
profiles = response.json()
print(profiles)

Standby API: on-demand profile enrichment

For repeated HTTP calls, open the Server tab, use the Actor's standby URL, and send:

POST https://virap--real-time-linkedin-profile-scraper-api.apify.actor/v1/people/enrich
Authorization: Bearer YOUR_APIFY_TOKEN
Content-Type: application/json
{"profile_url":"https://www.linkedin.com/in/xavier-hen"}

The stable Standby address above is shown in this Actor's Server tab. Authenticate with an Apify token in the Authorization header. Use GET /health for the service health endpoint. A healthy server response confirms service availability; it does not confirm that a particular profile can be enriched.

Connect to n8n or Make

Use an HTTP Request module with the standard POST endpoint above. Set Authorization to Bearer YOUR_APIFY_TOKEN, choose JSON body, and map your contact's LinkedIn URL to profile_url. The result is an array containing the enriched profile; map its available fields to your CRM or spreadsheet. Start with one contact and a small spending limit before enabling a larger workflow.

Tips for reliable enrichment

  • Use canonical personal profile URLs rather than search links or company pages.
  • Start with one profile and inspect its output before integrating a larger workflow.
  • Configure timeouts and maximum run costs. Increase concurrency gradually and handle rate limits.
  • Retry temporary 429 and 5xx responses with a delay and backoff. Correct invalid input before retrying.
  • Keep nested fields as JSON when you need full education and work-history records.
  • Keep Apify tokens in trusted server-side environments and out of public code, URLs and browser clients.

Performance varies with cold starts, profile availability, concurrency and upstream response times. No fixed latency or throughput is guaranteed.

FAQ and support

Does this Actor find people or return email addresses?

It enriches a LinkedIn profile URL that you already have. It is not a LinkedIn people-search tool or an email/phone finder.

Can I use it without writing code?

Yes. Paste a URL in Apify Console, start the Actor, then export its dataset. Saved tasks, schedules and integrations can help repeat the workflow.

Why are some fields missing?

Profiles expose different information. Unavailable fields may be absent, null or empty. Field completeness and profile availability are not guaranteed.

What do API errors mean?

The Apify gateway requires a valid token (401/403 on authentication or access errors). A 402 response means the configured spending limit cannot cover the next successful profile. The standby API uses 400 for invalid profile URLs, 404 for profiles not found, 422 for invalid requests, 429 for rate limiting, 502 for upstream errors and 504 for timeouts. Apify platform endpoints have their own response codes; inspect the run log when diagnosing a standard run.

Where can I report a problem?

Open the Actor's Issues tab. Include the run ID, expected behavior and relevant error message. Never include API tokens or other credentials.

This independent tool is not affiliated with, endorsed by or sponsored by LinkedIn Corporation or Microsoft Corporation. Use the Actor and returned data in accordance with applicable laws, privacy requirements and relevant platform terms.