Have a question?

Contact Us

How to scrape LinkedIn?

5 min read
Web scraping 9 min read  ·  Published: 07/05/2026

LinkedIn Scraping API: Extract Profiles, Companies and Jobs with ScrapingBot

ScrapingBot's LinkedIn scraping API gives developers programmatic access to public LinkedIn data — profiles, company pages, and job listings — in structured JSON format, without dealing with rate limits, login walls, or bot detection. This guide covers everything you need to integrate the API into your pipeline: endpoints, parameters, response structure, and production best practices.

1. Why use a LinkedIn scraping API?

LinkedIn is the world's largest professional network, with over 1 billion members and millions of company pages. Over time, it has become a critical data source for a wide range of technical applications:

  • Talent intelligence — build candidate pipelines by extracting profiles filtered by skills, location, or experience
  • Lead generation — identify decision-makers at target companies using company page and employee data
  • Market research — track hiring trends, headcount growth, and industry movements at scale
  • Competitive analysis — monitor competitor company pages, job postings, and workforce changes
  • CRM enrichment — automatically enrich contact records with up-to-date professional data

LinkedIn's official API is highly restricted — it provides access only to a limited set of data and requires a lengthy approval process. Consequently, a LinkedIn scraping API is the most practical solution for developers who need reliable, scalable access to public LinkedIn data.

⚠️ Important: ScrapingBot only extracts publicly accessible data from LinkedIn. Always ensure your use case complies with applicable data protection laws (GDPR, CCPA) and LinkedIn's terms of service.

2. What data can the LinkedIn scraping API extract?

ScrapingBot's LinkedIn scraping API supports three types of data extraction. Below is the full field reference for each:

LinkedIn Profile data

FieldDescriptionType
urlProfile URLstring
nameFull namestring
positionCurrent job titlestring
currentCompanyCurrent company name and linkobject
avatarProfile picture URLstring
aboutBio / about sectionstring
cityLocationstring
followingNumber of followersinteger
experienceWork history (company, title, dates)array
educationEducation historyarray
certificationsProfessional certificationsarray
coursesCourses completedarray
languagesLanguages spokenarray
groupsLinkedIn groups membershiparray
postsRecent postsarray

LinkedIn Company Profile data

FieldDescriptionType
urlCompany page URLstring
nameCompany namestring
sphereIndustry sectorstring
followersNumber of followersinteger
employeesNumber of employeesinteger
aboutCompany descriptionstring
locationsOffice locationsarray
websiteCompany website URLstring
industriesIndustry tagsarray
companySizeEmployee count rangestring
headquartersHQ locationstring
typeCompany type (public, private…)string
foundedYear foundedinteger
updatesRecent company postsarray

3. Technical challenges of scraping LinkedIn

LinkedIn is one of the most aggressively protected platforms against automated data collection. Before integrating any scraping solution, it is important to understand what makes it technically difficult:

  • Login wall — most profile data is hidden behind authentication, making headless browser scraping unreliable.
  • Aggressive bot detection — behavioral fingerprinting, TLS fingerprinting, and IP reputation scoring block scrapers within seconds.
  • JavaScript rendering — all profile data loads dynamically via React; therefore, plain HTTP requests return empty shells.
  • Rate limiting — even authenticated requests are throttled aggressively, with temporary bans triggered after a small number of requests.
  • Frequent front-end changes — LinkedIn's DOM structure changes regularly, which means selector-based scrapers break without warning.

Furthermore, building and maintaining a custom LinkedIn scraper that handles all of these challenges requires significant ongoing engineering effort. Consequently, ScrapingBot's LinkedIn scraping API abstracts all of this complexity so you can focus on using the data.

4. How the LinkedIn scraping API works

Two-step asynchronous pattern

ScrapingBot's LinkedIn scraping API uses a two-step asynchronous pattern — specifically designed to handle LinkedIn's protections without getting blocked:

StepMethodPurpose
1POSTSubmit the scraping job and receive a responseId
2GETPoll with the responseId to retrieve the result when ready

This pattern is necessary because LinkedIn scraping requires time to bypass protections reliably. As a result, the API returns a job ID immediately and processes the request asynchronously in the background.

Scraper values reference

Scraper valueTargetRequired parameter
linkedinProfileIndividual LinkedIn profileurl — full profile URL
linkedinCompanyProfileLinkedIn company pageurl — full company page URL

5. Step-by-step: integrate the LinkedIn scraping API

Step 1 — Create your ScrapingBot account

To get started, ScrapingBot offers free access with 100 credits per month — no payment information required. Already have an account? Simply log in and retrieve your API credentials from the dashboard.

Step 2 — Submit the scraping job (POST request)

Send a POST request to the Data Scraper endpoint with your target URL and scraper type:

POST https://api.scraping-bot.io/scrape/data-scraper

Authorization: Basic {base64(username:api_key)}
Content-Type: application/json

// Scraping a LinkedIn profile:
{
  "scraper": "linkedinProfile",
  "url": "https://www.linkedin.com/in/username/"
}

// Scraping a company page:
{
  "scraper": "linkedinCompanyProfile",
  "url": "https://www.linkedin.com/company/company-name/"
}

The API immediately returns a responseId:

{
  "responseId": "abc123xyz789"
}

Step 3 — Poll for the result (GET request)

Next, use the responseId to retrieve the scraped data:

GET https://api.scraping-bot.io/scrape/data-scraper-response?responseId=abc123xyz789&scraper=linkedinProfile

Authorization: Basic {base64(username:api_key)}

Should the job still be processing, you will receive:

{
  "status": "pending",
  "message": "Scraping is not finished for this request, try again in a few"
}

In that case, retry after 2–3 seconds. Once complete, the API returns the full structured JSON profile.

💡 Production tip: Implement an exponential backoff retry loop — start with a 2-second delay, then increase to 4s, 8s, and so on. Most LinkedIn requests complete within 5–15 seconds depending on profile complexity.

Step 4 — Parse the JSON response

Once the result is ready, the API returns a fully structured JSON object. Below is an example of the profile response structure:

{
  "name": "John Smith",
  "position": "Senior Software Engineer",
  "currentCompany": {
    "name": "Acme Corp",
    "url": "https://www.linkedin.com/company/acme-corp/"
  },
  "city": "San Francisco, CA",
  "following": 3200,
  "experience": [
    {
      "title": "Senior Software Engineer",
      "company": "Acme Corp",
      "startDate": "2022-03",
      "endDate": null,
      "current": true
    }
  ],
  "education": [
    {
      "school": "MIT",
      "degree": "MSc Computer Science",
      "years": "2015–2017"
    }
  ],
  "skills": ["Python", "Kubernetes", "PostgreSQL"],
  "certifications": ["AWS Certified Solutions Architect"]
}

6. Key use cases for the LinkedIn scraping API

Talent intelligence and recruiting

Extract candidate profiles at scale to build talent pipelines filtered by skills, experience level, location, or current employer. By combining profile data with company headcount trends, you can furthermore identify when target companies are scaling specific teams — a strong signal for both sales and recruiting.

B2B lead generation

Scrape company pages to identify key decision-makers, then cross-reference with profile data to build targeted outreach lists. Tracking company updates and job postings additionally gives you real-time intent signals — for example, a company hiring five data engineers is likely evaluating new data infrastructure.

CRM and data enrichment

Feed scraped LinkedIn data directly into your CRM to keep contact records up to date automatically. As a result, your sales team always has accurate job titles, company affiliations, and contact context — without manual research.

Competitive intelligence

Monitor competitor company pages for headcount changes, new hires, and technology stack signals from job descriptions. Tracking employee growth rates over time is moreover one of the most reliable leading indicators of a company's financial trajectory.

7. Going further

Scaling your LinkedIn data pipeline

Once your integration is working, you can scale it by batching requests across multiple profiles or company pages in parallel. ScrapingBot handles concurrency and IP rotation automatically — so your pipeline can process hundreds of profiles per hour without manual infrastructure management.

Combining with other data sources

Beyond LinkedIn, ScrapingBot's unified LinkedIn scraping API also supports Instagram, Threads, Facebook, and many other platforms with the same authentication and response pattern.

Furthermore, this makes it straightforward to build multi-source enrichment pipelines that combine LinkedIn professional data with social media presence data — all through a single API key.

Ready to integrate the LinkedIn scraping API? Get 100 free credits when you sign up for ScrapingBot — no credit card required.

Try ScrapingBot for free →

Looking for something more specific?

Start using ScrapingBot

Ready to Unlock Web Data?
Data is only useful once it’s accessible. Let us do the heavy lifting so you can focus on insights.