---
title: "LinkedIn Scraper API - Profiles, Companies & Jobs"
description: "LinkedIn scraper API: send a public profile, company or job URL, get structured JSON. No cookies or LinkedIn account. 15 credits per page, free tier."
url: https://webscraping.ai/linkedin-scraper-api
markdown_index: https://webscraping.ai/llms.txt
---
STRUCTURED DATA API

# LinkedIn Scraper API

A LinkedIn scraper you call over HTTP: send a public LinkedIn profile, company or job URL to `/data` and get it back as structured JSON: experience and education, company size and locations, job criteria and salary. No cookies, session or LinkedIn account. Flat 15 credits per page.

[Start Free Trial](https://webscraping.ai/auth/sign_up)[View Documentation](https://webscraping.ai/docs#data)

2,000 free API credits · No credit card required

## Scrape LinkedIn profiles, companies and jobs

Send the page's normal URL to `/data`. The page type is detected from the URL, and the response tells you which one it was in `request_parameters.type`.

### Profile

`type: "profile"`

Name, headline, about, location, followers, connections, current company, experience, education, skills, certifications, languages, awards, publications, volunteering, recommendations and similar profiles — whatever the public profile shows.

`linkedin.com/in/public-id`

### Company

`type: "company"`

Name, about, tagline, industry, size band and employee count, followers, website, headquarters, founding year, company type, specialties, locations, and similar and affiliated pages. Showcase pages too.

`linkedin.com/company/slug``linkedin.com/showcase/slug`

### Job

`type: "job"`

Title, company, location, posting date, applicants, salary and parsed salary range, seniority, employment type, function, industries, full description, Easy Apply flag and whether it's still open.

`linkedin.com/jobs/view/JOB_ID``linkedin.com/jobs/search/?currentJobId=JOB_ID`

 These URLs return a `400` that isn't charged, with a message listing what is supported: school pages (`linkedin.com/school/…`), single posts (`linkedin.com/posts/…`) and the feed (`/feed/…`), job search result lists without a `currentJobId`, and groups and events. Sub-pages of a company or profile, like `/company/slug/posts/` or `/in/public-id/recent-activity/`, return that company or profile, not its posts. More page types and sites are added over time, so don't validate URLs on your side — send the URL and handle the 400.

## How to scrape LinkedIn with one API call

No selectors, proxies, or headless browser to run. The page-scraping options (`js`, `proxy`, `headers`…) don't apply; `country` picks the proxy country (default `us`).

**cURL**

```bash
curl -G "https://api.webscraping.ai/data" \
  --data-urlencode "api_key=YOUR_API_KEY" \
  --data-urlencode "url=https://www.linkedin.com/company/microsoft"
# Response (excerpt):
# {
# "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
# "provider": "linkedin", "type": "company"},
# "parse_status": "ok",
# "data": {
# "id": "microsoft",
# "company_id": "1035",
# "name": "Microsoft",
# "industry": "Software Development",
# "company_size": "10,001+ employees",
# "followers": 26000000,
# "headquarters": "Redmond, Washington",
# "country_code": "US",
# "founded": 1975,
# "company_type": "Public Company",
# "specialties": ["Business Software", "Developer Tools", ...],
# "locations": [{"address": "...", "city": "Redmond", "country": "US",
# "is_headquarters": true}, ...],
# "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
# ...
# }
# }
```

**Python**

```python
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client

client = Client(api_key="YOUR_API_KEY")
result = client.data("https://www.linkedin.com/company/microsoft")
print(result["request_parameters"]["provider"], result["parse_status"])
print(result["data"])
# Response (excerpt):
# {
# "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
# "provider": "linkedin", "type": "company"},
# "parse_status": "ok",
# "data": {
# "id": "microsoft",
# "company_id": "1035",
# "name": "Microsoft",
# "industry": "Software Development",
# "company_size": "10,001+ employees",
# "followers": 26000000,
# "headquarters": "Redmond, Washington",
# "country_code": "US",
# "founded": 1975,
# "company_type": "Public Company",
# "specialties": ["Business Software", "Developer Tools", ...],
# "locations": [{"address": "...", "city": "Redmond", "country": "US",
# "is_headquarters": true}, ...],
# "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
# ...
# }
# }
```

**JavaScript**

```javascript
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';

const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const result = await client.data({ url: 'https://www.linkedin.com/company/microsoft' });
console.log(result.request_parameters.provider, result.parse_status);
console.log(result.data);
// Response (excerpt):
// {
// "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
// "provider": "linkedin", "type": "company"},
// "parse_status": "ok",
// "data": {
// "id": "microsoft",
// "company_id": "1035",
// "name": "Microsoft",
// "industry": "Software Development",
// "company_size": "10,001+ employees",
// "followers": 26000000,
// "headquarters": "Redmond, Washington",
// "country_code": "US",
// "founded": 1975,
// "company_type": "Public Company",
// "specialties": ["Business Software", "Developer Tools", ...],
// "locations": [{"address": "...", "city": "Redmond", "country": "US",
// "is_headquarters": true}, ...],
// "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
// ...
// }
// }
```

**PHP**

```php
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';

use WebScrapingAI\Client;

$client = new Client('YOUR_API_KEY');
$result = $client->data(url: 'https://www.linkedin.com/company/microsoft');
echo $result['request_parameters']['provider'], ' ', $result['parse_status'], "\n";
print_r($result['data']);
// Response (excerpt):
// {
// "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
// "provider": "linkedin", "type": "company"},
// "parse_status": "ok",
// "data": {
// "id": "microsoft",
// "company_id": "1035",
// "name": "Microsoft",
// "industry": "Software Development",
// "company_size": "10,001+ employees",
// "followers": 26000000,
// "headquarters": "Redmond, Washington",
// "country_code": "US",
// "founded": 1975,
// "company_type": "Public Company",
// "specialties": ["Business Software", "Developer Tools", ...],
// "locations": [{"address": "...", "city": "Redmond", "country": "US",
// "is_headquarters": true}, ...],
// "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
// ...
// }
// }
```

**Ruby**

```ruby
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'

client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
result = client.data('https://www.linkedin.com/company/microsoft')
puts "#{result['request_parameters']['provider']} #{result['parse_status']}"
puts result['data'].inspect
# Response (excerpt):
# {
# "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
# "provider": "linkedin", "type": "company"},
# "parse_status": "ok",
# "data": {
# "id": "microsoft",
# "company_id": "1035",
# "name": "Microsoft",
# "industry": "Software Development",
# "company_size": "10,001+ employees",
# "followers": 26000000,
# "headquarters": "Redmond, Washington",
# "country_code": "US",
# "founded": 1975,
# "company_type": "Public Company",
# "specialties": ["Business Software", "Developer Tools", ...],
# "locations": [{"address": "...", "city": "Redmond", "country": "US",
# "is_headquarters": true}, ...],
# "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
# ...
# }
# }
```

**Go**

```go
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main

import (
    "context"
    "fmt"

    webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)

func main() {
    client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
    res, _ := client.Data(context.Background(), &webscrapingai.DataOptions{
        URL: "https://www.linkedin.com/company/microsoft",
    })
    fmt.Println(res.RequestParameters.Provider, res.ParseStatus)
    fmt.Println(string(res.Data)) // raw JSON; its shape depends on the provider and page type
}
// Response (excerpt):
// {
// "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
// "provider": "linkedin", "type": "company"},
// "parse_status": "ok",
// "data": {
// "id": "microsoft",
// "company_id": "1035",
// "name": "Microsoft",
// "industry": "Software Development",
// "company_size": "10,001+ employees",
// "followers": 26000000,
// "headquarters": "Redmond, Washington",
// "country_code": "US",
// "founded": 1975,
// "company_type": "Public Company",
// "specialties": ["Business Software", "Developer Tools", ...],
// "locations": [{"address": "...", "city": "Redmond", "country": "US",
// "is_headquarters": true}, ...],
// "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
// ...
// }
// }
```

**Java**

```java
// Maven: ai.webscraping:webscraping-ai:4.2.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.DataOptions;
import ai.webscraping.result.DataResult;

Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
DataResult result = client.data(DataOptions.builder()
    .url("https://www.linkedin.com/company/microsoft")
    .build());
System.out.println(result.getRequestParameters().getProvider() + " " + result.getParseStatus());
System.out.println(result.getData());
// Response (excerpt):
// {
// "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
// "provider": "linkedin", "type": "company"},
// "parse_status": "ok",
// "data": {
// "id": "microsoft",
// "company_id": "1035",
// "name": "Microsoft",
// "industry": "Software Development",
// "company_size": "10,001+ employees",
// "followers": 26000000,
// "headquarters": "Redmond, Washington",
// "country_code": "US",
// "founded": 1975,
// "company_type": "Public Company",
// "specialties": ["Business Software", "Developer Tools", ...],
// "locations": [{"address": "...", "city": "Redmond", "country": "US",
// "is_headquarters": true}, ...],
// "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
// ...
// }
// }
```

**C#**

```csharp
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;

var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var result = await client.DataAsync(new DataRequest {
    Url = "https://www.linkedin.com/company/microsoft",
});
Console.WriteLine($"{result.RequestParameters.Provider} {result.ParseStatus}");
Console.WriteLine(result.Data);
// Response (excerpt):
// {
// "request_parameters": {"url": "https://www.linkedin.com/company/microsoft",
// "provider": "linkedin", "type": "company"},
// "parse_status": "ok",
// "data": {
// "id": "microsoft",
// "company_id": "1035",
// "name": "Microsoft",
// "industry": "Software Development",
// "company_size": "10,001+ employees",
// "followers": 26000000,
// "headquarters": "Redmond, Washington",
// "country_code": "US",
// "founded": 1975,
// "company_type": "Public Company",
// "specialties": ["Business Software", "Developer Tools", ...],
// "locations": [{"address": "...", "city": "Redmond", "country": "US",
// "is_headquarters": true}, ...],
// "similar": [{"name": "...", "url": "...", "industry": "...", ...}, ...],
// ...
// }
// }
```

Trimmed, and the counts are illustrative — they change constantly. Fields a page doesn't expose come back as `null`, though some flags come back `false` and lists come back empty. `data` can be `null` when `parse_status` is `parse_failed` or `not_found`, so check it before reading fields.

## What the LinkedIn scraper returns

The key fields per page type. Names are snake\_case across every site; the full contract is in the [API reference](https://webscraping.ai/docs#data).

### `type: "profile"`

| Field | What it holds |
| --- | --- |
| `public_identifier`, `linkedin_num_id`, `url` | The `/in/` id, the numeric member id and the profile URL. |
| `name`, `first_name`, `last_name`, `headline`, `about` | Identity and summary. |
| `location`, `country_code`, `avatar_url`, `background_url` | Location and images. |
| `followers`, `connections` | Follower count; `connections` is the band LinkedIn shows (500 means 500+). |
| `current_company` | `name` and `url`. |
| `experience` | `title`, `company_name`, `company_url`, `location`, `start_date`, `end_date`, `is_current`, `duration`, `description`. |
| `education` | `school`, `degree`, `field_of_study`, `start_date`, `end_date`. |
| `skills`, `certifications`, `languages`, `honors_and_awards` | Lists as shown on the public profile. |
| `publications`, `volunteer_experience`, `recommendations`, `similar_profiles` | The remaining public sections, plus `recommendations_count` and `influencer`. |

### `type: "company"`

| Field | What it holds |
| --- | --- |
| `id`, `company_id`, `name`, `url` | The URL slug, the numeric company id, name and canonical URL. |
| `about`, `tagline`, `industry`, `company_type`, `founded`, `specialties` | The About section. |
| `company_size`, `employee_count`, `followers` | The size band, the member count LinkedIn reports, and followers. |
| `website`, `headquarters`, `country_code` | Contact and location basics. |
| `locations` | Each office as `address`, `city`, `country`, `is_headquarters`. |
| `similar`, `affiliated` | Related pages with `name`, `url`, `industry`, `location`, `logo_url`. |
| `logo_url`, `cover_image_url` | Images. |

### `type: "job"`

| Field | What it holds |
| --- | --- |
| `job_id`, `title`, `url`, `company` | The posting and its company (`name`, `url`, `logo_url`). |
| `location`, `posted_date`, `posted_at` | Location; LinkedIn's relative date ("2 weeks ago") and the approximate ISO date computed from it. |
| `applicants`, `applicants_text` | The exact applicant count when LinkedIn shows one, and its raw text ("Over 200 applicants"). |
| `salary`, `salary_range` | The salary text and `{min, max, currency, period}` parsed from it, when the posting has one. |
| `seniority_level`, `employment_type`, `job_function`, `industries` | The job criteria. |
| `description`, `description_html` | The full description as text and HTML. |
| `easy_apply`, `apply_link`, `is_closed` | Whether it uses Easy Apply and whether it's still accepting applications. apply\_link is usually null: the public job page doesn't carry external apply URLs. |

## What's not included

Everything comes from what LinkedIn shows a logged-out visitor. That sets these limits.

**Only what the public profile shows.** Many members limit what logged-out visitors see, so experience, education and other sections can be partial or empty. Profiles hidden from logged-out visitors can't be fetched; those requests fail and aren't charged.

**No contact details.** Email addresses and phone numbers aren't on public pages and aren't returned.

**No company funding or posts.** Company pages don't include funding, investors, stock data or the company's post feed.

**School pages aren't supported** and return the free 400; job posters aren't returned.

**Need a page type or site that isn't supported?** [`/ai/fields`](https://webscraping.ai/docs#ai-fields) extracts the fields you describe in plain language from any public page, and [`/html`](https://webscraping.ai/docs#html) returns the rendered HTML for your own parser.

## Flat pricing: 15 credits per page

Every supported LinkedIn page type costs the same, with no extra charge for proxies or retries. That's about $1.74 per 1,000 pages on the $29 plan.

| Plan | Price | Credits | Pages |
| --- | --- | --- | --- |
| Free | $0 | 2,000 | up to 133 |
| Personal | $29/mo | 250,000 | up to 16,666 |
| Plus | $99/mo | 1,000,000 | up to 66,666 |
| Startup | $249/mo | 3,000,000 | up to 200,000 |

The free plan's 2,000 credits renew monthly. [All plans](https://webscraping.ai/#pricing), including pay-as-you-go credits.

### What's charged

**Unsupported URL or page type:** a `400`, not charged.

**Page couldn't be fetched:** a `500`, not charged.

**Charged even without data:** `parse_status` `parse_failed` (the page was fetched but couldn't be parsed) and `not_found` (the page doesn't exist) are successful requests and cost 15 credits, like `ok`.

## Also from the terminal, AI agents, and n8n

### CLI

[webscraping-ai](https://github.com/webscraping-ai/webscraping-ai-cli) has a `data` command; pass `-` to read URLs from stdin, one per line.

```bash
webscraping-ai data 'https://www.linkedin.com/company/microsoft'
```

### MCP server

Claude, Cursor and other MCP clients get a `webscraping_ai_data` tool from the [hosted MCP server](https://webscraping.ai/integrations/mcp-server) (OAuth login, no API key to paste). Ask for a LinkedIn page's data in plain language and the agent calls it.

### n8n

The [WebScraping.AI n8n node](https://webscraping.ai/integrations/n8n) has a **Get Structured Data** operation: feed it URLs from a sheet or a trigger and route the JSON onward, no code.

## Frequently asked questions

Can you scrape LinkedIn profiles?

Public ones, yes. Send linkedin.com/in/public-id and get the name, headline, about, location, followers, current company, and the experience, education, skills and other sections the public profile shows. Profiles hidden from logged-out visitors can't be fetched, and those requests aren't charged.

Can I use AI to scrape LinkedIn profiles?

Yes. The hosted WebScraping.AI MCP server gives Claude, Cursor and other MCP clients a webscraping\_ai\_data tool, so an agent can fetch a LinkedIn profile, company or job URL as JSON when you ask it to. Code can call the same /data endpoint directly.

Do I need a LinkedIn account or cookies?

No. /data reads the pages LinkedIn serves to logged-out visitors, so there's no account, session cookie or li\_at token on your side.

Why is a profile's experience empty?

LinkedIn lets members limit what logged-out visitors see. /data returns what the public profile shows, so for some members experience, education or other sections are partial or empty. Profiles that are hidden from logged-out visitors entirely return an error and aren't charged.

Can I scrape LinkedIn job listings?

Yes, one posting per request: send linkedin.com/jobs/view/JOB\_ID (or a jobs search URL with currentJobId) and get the title, company, criteria, salary when posted, applicants and the full description. Search result lists aren't supported yet.

Is there a free LinkedIn scraper API?

Yes, for trying it out: the free plan includes 2,000 API credits every month, which covers 133 LinkedIn pages at 15 credits each. No credit card is needed. Paid plans start at $29/mo for 250,000 credits, or buy pay-as-you-go credits with no subscription from a $20 top-up (100,000 credits, about 6,666 pages).

How much does the LinkedIn Scraper API cost?

A flat 15 credits per page, for every supported LinkedIn page type. On the $29/mo plan (250,000 credits) that is up to 16,666 pages, or about $1.74 per 1,000. Unsupported URLs return a 400 and fetch failures a 500; neither is charged. parse\_failed and not\_found results are successful requests and are charged.

What happens if I send a URL you don't support?

You get a 400 that isn't charged, and its message lists what is supported. For pages /data doesn't cover, /ai/fields extracts the fields you describe from any public URL, and /html returns the rendered page for your own parser.

## Other sites on the same endpoint

One API key, one request format, the same response envelope.

[YouTube Scraper API](https://webscraping.ai/youtube-scraper-api)[TikTok Scraper API](https://webscraping.ai/tiktok-scraper-api)[Twitter (X) Scraper API](https://webscraping.ai/twitter-scraper-api)[Instagram Scraper API](https://webscraping.ai/instagram-scraper-api)[Reddit Scraper API](https://webscraping.ai/reddit-scraper-api)[All social media sites](https://webscraping.ai/social-media-scraper-api)[Google SERP API](https://webscraping.ai/google-serp-api)

[B2B lead generation](https://webscraping.ai/use-cases/b2b-lead-generation): Company and people data for prospect lists.

[Job listing aggregation](https://webscraping.ai/use-cases/job-listing-aggregation): Collect job postings across boards into one schema.

[Sales intelligence](https://webscraping.ai/use-cases/sales-intelligence): Firmographics and org changes from public pages.

## Get LinkedIn data as JSON today

Get started with 2,000 free API credits. No credit card required.

[Start Free Trial](https://webscraping.ai/auth/sign_up)[View API Documentation](https://webscraping.ai/docs#data)
