Scraper API vs data API · Public data · JSON · REST
LinkedIn Scraper API vs Data API: how to get public LinkedIn data as JSON
A LinkedIn scraper API fetches LinkedIn pages for you; a LinkedIn data API takes an identifier and returns a record. This page shows how they differ, who maintains what, and when each fits. EnvoAPI is a public data API: send a profile URL, company domain or keyword, get JSON back, no LinkedIn login. Independent, not affiliated with LinkedIn.
GET/v1/profiles/details/by-url?url=linkedin.com/in/avery-chen-synthetic
100 free creditsNo credit card required
- API endpoints
- 58
- Per lookup
- 1 credit
- One JSON envelope
dataandmeta
EnvoAPI is independent and not affiliated with LinkedIn. It returns public data only.
01 · The term
What people mean by “LinkedIn scraper API”
Search for a LinkedIn scraper API and you will find products that work in three different ways.
Model A · URL in
Some take a LinkedIn URL and return the parsed page.
Model B · Your account
Some run through a LinkedIn account that you or your users connect.
Model C · Identifier in
Others take an identifier, such as a profile URL or a company domain, and return a record in a fixed schema.
This is how EnvoAPI works
Vendors use “scraper API” and “scraping API” for the first two, and often for the third as well, so the label alone does not tell you what you will end up running yourself. The rest of this page compares the models by that question. For the longer case against building your own scraper, read scraping LinkedIn vs using an API.
02 · Compare
Four ways to get LinkedIn data into your code
The models differ less in what they return than in what they leave you to maintain. The table groups them by model rather than ranking brands.
| Model | You send, you get | You maintain | The provider maintains | Needs your LinkedIn account? | Billed per |
|---|---|---|---|---|---|
| Build your own scraper | A request through your own browser automation; raw HTML or fields parsed by your own code | Browser automation, proxies, CAPTCHA handling, selectors, parsing, account health | Nothing | OftenA login or session cookies | Your own infrastructure and engineering time |
| Scraper API, URL in and record outExamples: Bright Data, Crawlbase; also run as marketplace actors, for example on Apify | LinkedIn URLs in; parsed records out, in each vendor’s own format | Batching, job handling, mapping each vendor’s output into your own schema | Proxies, page rendering, blocking | Check per productCrawlbase and Apify describe reading public pages without your login | Record, request or actor run |
| Account-based APIExamples: Unipile, Linked API | A LinkedIn account that you or your users connect, plus an identifier; what that account can see | Account connection, account health, the limits that apply to that account, the account owner’s consent | Calls made on behalf of the connected account | Yes | Connected account or seat |
| Public data APIExample: EnvoAPI | A profile URL, username, company domain, job URL or keyword; a JSON record in one { data, meta } envelope | Your API key, and your mapping of the fields into your own schema, including null fields | Data retrieval, the response schema, rate limits and credit accounting | NoNo LinkedIn login or OAuth | Credit, on published plans |
A fifth option is to buy a dataset of pre-collected records. That suits bulk offline analysis, but a dataset cannot answer a request made inside your product.
03 · One call
What a data API call looks like
A data API call is one authenticated GET request from your server. The record arrives under data. What the call cost, and whether each section of the record is complete, arrive under meta.
RequestGET · Bearer key
curl -G "https://api.envoapi.com/v1/profiles/details/by-url" \ -H "Authorization: Bearer $ENVO_API_KEY" \ --data-urlencode "url=https://www.linkedin.com/in/avery-chen-synthetic/"import osimport requestsresponse = requests.get( "https://api.envoapi.com/v1/profiles/details/by-url", headers={"Authorization": f"Bearer {os.environ['ENVO_API_KEY']}"}, params={"url": "https://www.linkedin.com/in/avery-chen-synthetic/"}, timeout=60,)response.raise_for_status()body = response.json()print(body["data"]["fullName"], body["meta"]["creditCost"])const params = new URLSearchParams({ url: "https://www.linkedin.com/in/avery-chen-synthetic/",});const response = await fetch( `https://api.envoapi.com/v1/profiles/details/by-url?${params}`, { headers: { Authorization: `Bearer ${process.env.ENVO_API_KEY}` } });if (!response.ok) throw new Error(`Request failed: ${response.status}`);const { data, meta } = await response.json();console.log(data.fullName, meta.creditCost);package mainimport ( "encoding/json" "fmt" "log" "net/http" "net/url" "os")func main() { q := url.Values{"url": {"https://www.linkedin.com/in/avery-chen-synthetic/"}} req, err := http.NewRequest("GET", "https://api.envoapi.com/v1/profiles/details/by-url?"+q.Encode(), nil) if err != nil { log.Fatal(err) } req.Header.Set("Authorization", "Bearer "+os.Getenv("ENVO_API_KEY")) resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { log.Fatalf("request failed: %s", resp.Status) } var body struct { Data struct { FullName string `json:"fullName"` } `json:"data"` Meta struct { CreditCost int `json:"creditCost"` } `json:"meta"` } if err := json.NewDecoder(resp.Body).Decode(&body); err != nil { log.Fatal(err) } fmt.Println(body.Data.FullName, body.Meta.CreditCost)}What you do not run
- A browser or headless automation.
- Proxies, or CAPTCHA handling.
- Selectors that need rewriting when a page changes.
- A LinkedIn login or session cookie that has to be kept alive.
{ "data": { "publicId": "profile_7Qf2Ld9xBm4Rt8Nv3Kw6Jz1Ce5Hy0Pa2Su7Kd7V", "username": "avery-chen-synthetic", "fullName": "Avery Chen", "headline": "Revenue operations leader at Northstar Systems", "location": { "displayName": "San Francisco Bay Area", "countryCode": "US" }, "industry": { "name": "Software Development" }, "counts": { "followerCount": 1840 }, "experience": [ { "title": "Head of Sales", "company": { "name": "Northstar Systems" } } ] }, "meta": { "creditCost": 1, "sections": { "counts": "complete", "experience": "complete", "skills": "incomplete", "certifications": "empty" } }}- counts: complete
- experience: complete
- skills: incomplete
- certifications: empty
What every response tells your code
meta.creditCostand theX-Credits-Remainingheader report what the call cost and what is left.X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Resetreport your request window. A 429 response includesRetry-After.- Errors carry
error.code,error.messageanderror.retryable, so your client can tell whether a retry can help. meta.sectionsreports whether each section is complete, empty, incomplete or unavailable, so you can tell a missing value from an empty section.
Typed clients for Python, TypeScript and Go are on GitHub under the MIT license. Full parameters and schemas are in the API reference.
04 · Honest fit
When a scraper API or a dataset fits better
A data API is not the right tool for every job. Pick another model when:
You need millions of records for offline analysis.
A dataset delivers them in bulk and can cost less per record at that scale. It cannot answer a request made inside your product.
Better fit: Dataset
You need data from many sites, not only LinkedIn.
A scraping platform or a marketplace of scrapers covers more ground.
Better fit: Scraping platform
You need to act on LinkedIn.
Sending messages or connection requests, or reading what one member’s own session can see, takes an account-based API, and the limits of that account apply.
Better fit: Account-based API
EnvoAPI reads public profile, company, job and post data and returns it as JSON. It does not send messages, and it does not ship bulk datasets. If your product needs a record when a user opens a profile, or a scheduled lookup for a list you already hold, a data API fits.
05 · Coverage
What EnvoAPI covers
EnvoAPI covers public profile, company, job, post and search data through 58 endpoints, with one API key and one response shape. A profile record has 30 fields and a company record has 21.
Each family has its own page with the full field list, parameters and error behavior:
LinkedIn Profile API
Look up a person by profile URL, username or stored ID.
LinkedIn Company Data API
Look up a company by URL, slug or website domain.
LinkedIn Jobs API
Search job postings, open one by URL, or list the open roles at a company.
The LinkedIn data API page has the full catalogue and the comparison with LinkedIn’s official APIs. AI assistants such as Claude, ChatGPT and Cursor can use the same data through a hosted MCP server with 40 read-only tools.
06 · Pricing
Pricing in credits
Every plan runs on credits.
- A profile, company, job or search request
- 1 credit
- Public contact details
- 2 credits
- Free credits for new accounts, no card
- 100
- Paid plans start here: 10,000 credits and 60 requests per minute
- $49 / month
Pricing lists every plan, the top-up packs and the rate limits.
07 · Responsible use
Limits and responsible use
Know what the data is before you build on it.
Public data only.
EnvoAPI returns what a profile, company page or job posting publishes. Private messages, connection lists and anything behind a login are out of scope.
Fields can be null.
When a page does not publish a value, you get null, and
meta.sectionstells you whether the section is complete, empty, incomplete or unavailable.Job postings have a fixed shape.
There is no salary, apply link or applicant count field.
Not an official LinkedIn product.
EnvoAPI is independent and is not affiliated with or endorsed by LinkedIn. Do not describe it to your users as official.
Your obligations stay yours.
Review the platform terms that apply to you, privacy laws such as GDPR and CCPA, and your own compliance rules, and honor opt-out requests when you use the data for outreach. Trust and compliance explains how EnvoAPI handles access, deletion and opt-out requests. For what LinkedIn’s terms say about scraping and what that means for an account, read our guide to LinkedIn account risk.
08 · FAQ
LinkedIn scraper API FAQ
What is a LinkedIn scraper API?
A LinkedIn scraper API is a service that fetches public LinkedIn pages for you and returns what it finds as structured data. The term covers three models: URL-in scraper APIs, APIs that run through a LinkedIn account you connect, and public data APIs that return a record from an identifier.
What is the difference between a scraper API and a data API?
A scraper API takes a page and returns what it found there. A data API takes an identifier and returns a record in a fixed schema. In practice the difference is how much you maintain: with a data API you send one request and handle one response shape.
Is EnvoAPI a LinkedIn scraper API?
EnvoAPI is an independent public professional data API. You send a profile URL, username, company domain or keyword and get JSON back. You do not run a browser, proxies or a LinkedIn session, and EnvoAPI is not affiliated with or endorsed by LinkedIn.
Do I need a LinkedIn account, cookies or proxies?
No. You send an API key in the Authorization header from your server. No LinkedIn sign-in, consent screen, cookie or proxy is involved on your side. Keep the key on your backend so it never reaches a browser or mobile build.
What do I send and what do I get back?
Send a profile URL, username or ID, a company domain, slug or URL, a job URL, or a keyword. Every response has the same shape: the record under data, and meta with creditCost and a status for each section. A value a page does not publish comes back as null. The routes are listed on the LinkedIn data API page.
When is a scraper API or a dataset a better fit?
For millions of records analyzed offline, a dataset can cost less per record. For data from many different sites, a scraping platform covers more. To send messages or connection requests on LinkedIn, you need an account-based API. EnvoAPI reads public data only.
How much does it cost?
A profile, company, job or search request costs 1 credit, and public contact details cost 2. New accounts get 100 free credits with no card. Paid plans start at $49 per month for 10,000 credits.
Is it legal to scrape LinkedIn or use a scraper API?
It depends on your purpose, the platform terms that apply to you and the privacy laws in your markets. LinkedIn’s User Agreement restricts scraping and automated collection, and how you use any output stays your responsibility. EnvoAPI describes its approach on the Trust page; check with your own counsel.
Can I use it from AI agents or no-code tools?
Yes. A hosted MCP server exposes 40 read-only tools to Claude, ChatGPT, Cursor and other MCP clients. Any tool that can send an HTTP request with an Authorization header, such as n8n, Make or Zapier, can call the REST API.
Start with 100 free credits
Make your first call with the free credits and compare the JSON with what your existing setup returns. No credit card required.