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.
Table of contents
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.
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
| Field | Description | Type |
|---|---|---|
| url | Profile URL | string |
| name | Full name | string |
| position | Current job title | string |
| currentCompany | Current company name and link | object |
| avatar | Profile picture URL | string |
| about | Bio / about section | string |
| city | Location | string |
| following | Number of followers | integer |
| experience | Work history (company, title, dates) | array |
| education | Education history | array |
| certifications | Professional certifications | array |
| courses | Courses completed | array |
| languages | Languages spoken | array |
| groups | LinkedIn groups membership | array |
| posts | Recent posts | array |
LinkedIn Company Profile data
| Field | Description | Type |
|---|---|---|
| url | Company page URL | string |
| name | Company name | string |
| sphere | Industry sector | string |
| followers | Number of followers | integer |
| employees | Number of employees | integer |
| about | Company description | string |
| locations | Office locations | array |
| website | Company website URL | string |
| industries | Industry tags | array |
| companySize | Employee count range | string |
| headquarters | HQ location | string |
| type | Company type (public, private…) | string |
| founded | Year founded | integer |
| updates | Recent company posts | array |
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:
| Step | Method | Purpose |
|---|---|---|
| 1 | POST | Submit the scraping job and receive a responseId |
| 2 | GET | Poll 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 value | Target | Required parameter |
|---|---|---|
linkedinProfile | Individual LinkedIn profile | url — full profile URL |
linkedinCompanyProfile | LinkedIn company page | url — 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.
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 →



