LinkedIn Profile Scraper API

Get job, company and education details from LinkedIn profile URLs, from your AI assistant, no-code workflow or own code.

  • From $0.014 per Profile
  • No LinkedIn Login Needed
  • 10,000 Profiles per Task
Your list
LinkedIn profile URL
linkedin.com/in/maya-lindqvist
linkedin.com/in/tom-okafor
linkedin.com/in/lea-moreau
What you get back
NameJob title
Maya LindqvistHead of Sales
Tom OkaforOperations Lead
Léa MoreauFounder

Trusted by 38,000+ users at startups and Fortune 500 teams

AmazonAirbusUberFedexSAPSeonDatadogZendesk

Works with any tool that can send HTTP requests

  • Claude
  • Cursor
  • Codex
  • Make
  • n8n
  • Zapier
  • Your own code
Get Started

Pick Your Way In

Let an AI assistant or your automation tool do the setup, or call the REST API from your own code.

1

Paste the setup prompt

2

Paste your API key

Get your API key
3

Get your results

See a sample result
Using Make, n8n or Zapier? Here is every field for the HTTP request

Use the HTTP request module or node your tool offers. You need three steps: send the list, wait, then read the results.

1. Send your list (HTTP request)

Method
POST
URL
https://api.datablist.com/v1/enrichments/tasks
Headers
X-API-Key = your API key
Content-Type = application/json
Body (JSON)
json
{
"enrichmentId": "linkedin-profile-scraper",
"uniqueId": "linkedin-profile-scraper-import-1",
"settings": {
"experiencesNb": "3",
"educationsNb": "1"
},
"inputs": [
{"inputId": "row-1", "data": {"profileUrl": "https://www.linkedin.com/in/maya-lindqvist/"}},
{"inputId": "row-2", "data": {"profileUrl": "https://www.linkedin.com/in/tom-okafor/"}},
{"inputId": "row-3", "data": {"profileUrl": "https://www.linkedin.com/in/lea-moreau/"}}
]
}
Keep
The @id from the response. That is your task ID.

2. Wait until it is done

Add a short wait or delay, then a GET request to https://api.datablist.com/v1/enrichments/tasks/TASK_ID with the same X-API-Key header. Repeat until status is completed.

3. Read the results

GET https://api.datablist.com/v1/enrichments/tasks/TASK_ID/results?limit=50. Map outputs to your columns. If nextCursor is not empty, call again with &cursor= plus that value.

Overview

At a Glance

Fresh public profile data from a LinkedIn URL: who the person is, where they work and what they studied. No Datablist workspace, collection or import needed.

What you give it

What it costs

Use Cases

What Teams Build With It

Put LinkedIn Profile Scraper wherever your data already flows.

Sales and SDRs

Research leads before outreach

  1. LinkedIn URL from a lead list
  2. Scrape the profile
  3. Title, company, location

Pull the current role and company for every lead, so your sequence starts with the right person and a relevant first line.

Recruiting

Build candidate profiles

  1. Candidate LinkedIn URL
  2. Scrape the profile
  3. Jobs and education in your ATS

Get past jobs and education for every candidate and keep your ATS or sheet up to date without copy and paste.

RevOps

Spot job changes

  1. Contacts in the CRM
  2. Scrape the profile
  3. New company flagged

Re-run your contacts and compare the current company with the CRM to catch champions who moved to a new account.

Pricing

What Will It Cost You?

Pay per lookup with credits. API access starts on the Growth plan.

Calculator

How much will it cost you?

Tell us how many LinkedIn profiles you need and we'll show you the cheapest way to get them.

Required: API/MCP access and automation start on the Growth plan.

Recommended plan
…
Credits you'll have
…
Total this month
…
Get your API key

Same credits as the Datablist app View pricing

How credits work

1,000 credits = $1, so each credit costs a tenth of a cent. A fresh profile costs 25 credits and a cached profile 20 credits. A profile that cannot be found may still cost credits, because the lookup work was done. Every result returns creditsUsed, so you can track the real cost per row. Plan credits renew monthly and reset if unused. Top-up credits never expire.

For Developers

Build It Into Your Code

Everything you need to call the REST API directly: code, responses, endpoints, fields, authentication and limits.

datablist/linkedin-profile-scraper-api

Official examples: cURL, Python with Requests or async HTTPX, and TypeScript. Put your key in DATABLIST_API_KEY and run.

Open repository

Copy, Paste, Run

A complete script that creates a task, waits for it and prints every result. Replace YOUR_PERSONAL_API_KEY with your key.

# 1. Create the task (returns 202 Accepted and the task "@id")
curl --request POST 'https://api.datablist.com/v1/enrichments/tasks' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"enrichmentId": "linkedin-profile-scraper",
"uniqueId": "linkedin-profile-scraper-import-1",
"settings": {
"experiencesNb": "3",
"educationsNb": "1"
},
"inputs": [
{"inputId": "row-1", "data": {"profileUrl": "https://www.linkedin.com/in/maya-lindqvist/"}},
{"inputId": "row-2", "data": {"profileUrl": "https://www.linkedin.com/in/tom-okafor/"}},
{"inputId": "row-3", "data": {"profileUrl": "https://www.linkedin.com/in/lea-moreau/"}}
]
}'
# 2. Poll every few seconds until status is completed, failed or stopped
curl 'https://api.datablist.com/v1/enrichments/tasks/TASK_ID' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY'
# 3. Read the results, then follow nextCursor until it is null
curl 'https://api.datablist.com/v1/enrichments/tasks/TASK_ID/results?limit=50' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY'

What the API Returns

One result per input, with your inputId, a status, the outputs and the credits used. Sample data.

GET /resultsjson
{
"taskId": "00000000000040008000000000000001",
"results": [
{
"inputId": "row-1",
"status": "success",
"outputs": {
"profileUrl": "https://www.linkedin.com/in/maya-lindqvist/",
"firstName": "Maya",
"lastName": "Lindqvist",
"fullName": "Maya Lindqvist",
"linkedInHeadline": "Head of Sales at Brightwave Analytics",
"linkedInCity": "Stockholm",
"linkedInCountryCode": "SE",
"linkedInLocation": "Stockholm, Sweden",
"linkedInlastExpTitle": "Head of Sales",
"linkedInlastExpStartsAt": "2023-02-01",
"linkedInlastExpCompany": "Brightwave Analytics",
"linkedInlastExpCompanyWebsite": "https://www.brightwaveanalytics.com",
"linkedInlastExpCompanyIndustry": "Software Development",
"linkedInlastExpCompanyRange": "51-200",
"linkedInlastEduSchool": "Example University",
"linkedInLanguages": "English, Swedish",
"linkedInConnections": "500"
},
"creditsUsed": "25",
"error": null
}
],
"nextCursor": null
}

Endpoints and Fields

All paths are relative to https://api.datablist.com. Field definitions come from GET /v1/enrichments/linkedin-profile-scraper (docs updated Oct 21, 2026). Schema version: 2026-09-12.

View API schema (JSON) (opens in a new tab)

GET
/v1/enrichments/linkedin-profile-scraper
Read the schema, no key needed
POST
/v1/enrichments/tasks
Create a task
GET
/v1/enrichments/tasks/{taskId}
Poll status and progress
GET
/v1/enrichments/tasks/{taskId}/results
Read results, 1 to 100 per page
POST
/v1/enrichments/tasks/{taskId}/stop
Cancel a running task
GET
/v1/enrichments/tasks
Task history, newest first

Schema Reference

Send settings once per task and one data object per input. Results can include extra fields as the enrichment evolves, so keep unknown keys when you parse outputs.

Show all settings, inputs and outputs
Settings
Settings
includeUrnInclude LinkedIn Internal ID (URN)Boolean

Include the LinkedIn internal identifier (URN), for example: ACoAAAIJflYBlveEKEKWvVsjTP4QeXHK8KfcKHg. This ID can be used to build Sales Navigator URLs, like https://www.linkedin.com/sales/lead/XXXX.

Enabled when: acceptCachedProfiles==false

includePicturesInclude PicturesBoolean

Include the LinkedIn profile picture and the company logo URL. ⚠️ These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false

acceptCachedProfilesAccept cached profilesBoolean

Default behavior is to fetch fresh LinkedIn profile data. Enable this option to use cached profiles when available. Cached profiles cost 20 credits per profile.

Enabled when: includeUrn==false&includePictures==false

experiencesNbExperiences to returnText

How many work experiences to return. Default to 3.Allowed values: "3", "5", "10"

educationsNbEducations to returnText

How many educations to return. Default to 1.Allowed values: "1", "3", "5"

Inputs (data)
Inputs (data)
profileUrlrequiredPerson's LinkedIn ProfileText

LinkedIn Profile Identifier. Works with standard profile URLs (https://linkedin.com/in/xxx) and Sales Navigator URLs (https://www.linkedin.com/sales/lead/xxxx).

Outputs
Outputs
linkedInInternalIdentifierLinkedIn Internal ID (URN)Text

The unique internal LinkedIn identifier (URN). Example: ACoAAAIJflYBlveEKEKWvVsjTP4QeXHK8KfcKHg. Use it to build Sales Navigator URLs like https://www.linkedin.com/sales/lead/XXXX.

Enabled when: acceptCachedProfiles==false&includeUrn==true

profileUrlLinkedIn Profile URL NormalizedText

The clean and standardized LinkedIn Public Profile URL. In the format: https://www.linkedin.com/in/xxxFormat: uri

firstNameFirst NameText

The first name of the profile

lastNameLast NameText

The last name of the profile

fullNameFull NameText

The full name of the profile

linkedInHeadlineHeadlineText

The tagline on the user profile.

linkedInSummarySummaryText

A blurb (longer than the tagline) written by the user for his profile.

linkedInCityCityText

The city of the profile

linkedInStateStateText

The state of the profile

linkedInCountryCodeCountryText

The country code of the profile. 2-letter country code (ISO 3166-1 alpha-2).

linkedInCountryNameCountry NameText

The profile's country of residence, in English words.

linkedInLocationLocationText

Full Location text

linkedInProfilePictureLinkedIn Profile PictureText

These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false&includePictures==true

linkedInlastExpTitleTitle (Current or last experience)Text

The title of the current (or last) experience

linkedInlastExpEmploymentTypeEmployment Type (Current or last experience)Text

The employment type of the current (or last) experience.

linkedInlastExpDescriptionDescription (Current or last experience)Text

The description of the current (or last) experience

linkedInlastExpStartsAtStart Date (Current or last experience)Text

The start date of the current (or last) experience.Format: date

linkedInlastExpEndsAtEnd date (Current or last experience)Text

The end date of the last experience. None if still active.Format: date

linkedInlastExpLocationLocation (Current or last experience)Text

The location of the current (or last) experience

linkedInlastExpCompanyCompany Name (Current or last experience)Text

The company name of the current (or last) experience.

linkedInlastExpCompanyPageCompany page URL (Current or last experience)Text

LinkedIn company's profile URL of the current (or last) experience.

linkedInlastExpCompanyWebsiteCompany website (Current or last experience)Text

Company Website of the current (or last) experience.

linkedInlastExpCompanyDescriptionCompany description (Current or last experience)Text

The company description from the LinkedIn company page of the current or last experience.

linkedInlastExpCompanyIndustryCompany Industry (Current or last experience)Text

Company Industry of the current (or last) experience.

linkedInlastExpCompanyRangeCompany employee range (Current or last experience)Text

Size of the company. In the form: 1, 2-10, 11-50, etc.

linkedInlastExpCompanyLogoCompany Logo (Current or last experience)Text

These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false&includePictures==true

linkedIn2ExpTitleTitle (Experience #2)Text

The title from the second most recent work experience. If available.

linkedIn2ExpEmploymentTypeEmployment Type (Experience #2)Text

The employment type from the second most recent work experience. If available.

linkedIn2ExpDescriptionDescription (Experience #2)Text

The description from the second most recent work experience. If available.

linkedIn2ExpStartsAtStart Date (Experience #2)Text

The start date from the second most recent work experience. If available.Format: date

linkedIn2ExpEndsAtEnd date (Experience #2)Text

The end date from the second most recent work experience. If available.Format: date

linkedIn2ExpCompanyNameCompany Name (Experience #2)Text

The company name from the second most recent work experience. If available.

linkedIn2ExpLogoCompany Logo (Experience #2)Text

These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false&includePictures==true

linkedIn3ExpTitleTitle (Experience #3)Text

The title from the third most recent work experience. If available.

linkedIn3ExpEmploymentTypeEmployment Type (Experience #3)Text

The employment type from the third most recent work experience. If available.

linkedIn3ExpDescriptionDescription (Experience #3)Text

The description from the third most recent work experience. If available.

linkedIn3ExpStartsAtStart Date (Experience #3)Text

The start date from the third most recent work experience. If available.Format: date

linkedIn3ExpEndsAtEnd date (Experience #3)Text

The end date from the third most recent work experience. If available.Format: date

linkedIn3ExpCompanyNameCompany Name (Experience #3)Text

The company name from the third most recent work experience. If available.

linkedIn3ExpLogoCompany Logo (Experience #3)Text

These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false&includePictures==true

linkedInlastEduSchoolSchool (Current or last education)Text

The school name of the current (or last) education

linkedInlastEduDegreeDegree (Current or last education)Text

The degree of the current (or last) education

linkedInlastEduFieldField of Study (Current or last education)Text

The field of study of the current (or last) education

linkedInlastEduStartsAtStart Date (Current or last education)Text

The start date of the current (or last) educationFormat: date

linkedInlastEduEndsAtEnd date (Current or last education)Text

The end date of the current (or last) educationFormat: date

linkedInlastEduLogoLogo URL (Current or last education)Text

These URLs expire fast. Download the images to avoid broken links.

Enabled when: acceptCachedProfiles==false&includePictures==true

linkedInSkillsSkillsText

Comma-separated list of skills listed on the LinkedIn profile.

linkedInLanguagesLanguagesText

Comma-separated list of spoken languages of the LinkedIn profile.

linkedInConnectionsConnectionsText

The number of connections of the profile

One Header, Clear Limits

Create a Personal API Key in your Datablist account and send it on every authenticated request.

Authentication

Send your key in the X-API-Key header. Datablist exchanges and renews access tokens for you.

  • Header: X-API-Key: YOUR_PERSONAL_API_KEY
  • Optional: manage tokens yourself with Authorization: Bearer from POST /v1/account/token
  • One or the other: sending both headers returns 400 AmbiguousCredentials
  • Server side only: keep keys out of URLs, browser code and logs

Limits

  • Inputs per task: 1 to 10,000
  • Size: 16 KiB per input, 10 MiB per request
  • Run time: up to 24 hours per task
  • Task creation: 10 requests per 60 seconds per account
  • Polling and results: 120 requests per 60 seconds per operation
  • Active tasks: about 20 at once per account
  • Retention: tasks and results are kept for 90 days
FAQ

Frequently Asked Questions

Everything you or your AI coding agent need to integrate the LinkedIn Profile Scraper API: auth, request, polling, results, limits and retries.