What actually works without an account, and what hits the wall.
I am Dawson Young, the founder of CrustAPI. I ran every call on this page against our live endpoint on July 15, 2026, pasted the real timings and JSON below, and where DIY is genuinely fine, I say so.
Fetching one public profile with curl works. Fetching the fiftieth in a row usually does not. Here is what goes wrong, in the order most people hit it.
Browse a handful of profiles signed out and LinkedIn starts redirecting you to a sign-in or sign-up screen. The page you wanted stops loading and you get a login prompt instead.
Run the requests from one address and LinkedIn flags and throttles it at any real volume, so you end up spending your time on blocks and retries instead of on the data.
LinkedIn changes its public markup constantly. The selectors you wrote work until a layout change ships, then your parser returns nulls and you are debugging again.
A scraper is not a one-time build. LinkedIn changes, blocks evolve, and every fix lands back on you. You end up running a scraping system instead of building your own product.
A logged-out visitor can still see the core of a public profile. The table below is the actual field split from a live call. The left column is what came back; the right is what stays behind the sign-in gate.
| Public, logged out | Login-gated | |
|---|---|---|
| Name and headline | Yes | Visible signed out |
| Current title and company | Yes | Visible signed out |
| Location, follower count | Yes | Visible signed out |
| Full work history with dates | Yes | Visible signed out |
| Education and dates | Yes | Visible signed out |
| Skills, languages, awards | When the profile lists them | Some detail gated |
| Photo, banner, public URL | Yes | Visible signed out |
| Email address | Not on the public page | Behind login |
| Who viewed you, private connections | Not public | Behind login |
Field split from a live type=profile call on July 15, 2026. Skills can be empty on some profiles, so we do not promise they are always there.
Signed out, LinkedIn hands guest visitors a placeholder connection value of 8. We drop that and report the real public number instead. On the test profile that was a capped connectionsCount: 500, not the fake 8. Some tools pass the 8 straight through, which is a quick way to spot a thin scrape.
Instead of building and babysitting your own scraper, point one GET request at CrustAPI with a public profile URL. No LinkedIn login, no session cookie, no browser extension. Here is the exact call I ran.
The response is clean JSON, the same shape every time. This is the real body from July 15, 2026, trimmed for length where arrays repeat.
Five profile surfaces run the same way: type=profile, type=company, type=posts, type=jobs, and type=search for people by keyword (beta). You are billed the applicable price per successful call; a private or empty result returns a normal 200 and costs nothing. Full field docs are at the LinkedIn docs.
This is the split that matters most, and it is easy to miss. A lot of popular LinkedIn tools do not scrape public pages. They run through a real LinkedIn login, which means the account carrying the risk is yours.
PhantomBuster asks for your LinkedIn session cookie and runs through your account, with a cap around 1,500 profiles a day. Unipile connects your own accounts and the data rides your real sessions. Lix connects through an account too. If LinkedIn flags that activity, the account that gets restricted is yours.
CrustAPI reads only public, logged-out pages. There is no LinkedIn login in the loop and no session cookie of yours anywhere. Nothing of yours can get limited, because there is nothing of yours involved. That is the whole point of the no-cookie method.
To be fair, a connected-account tool can reach things the public page never shows: your own network, private connection details, or actions like sending connection requests. If you need signed-in-only data and accept the risk to your own account, a cookie tool is the right pick. The no-cookie method is for public data at volume with no account on the line.
Server processing time from live calls, reported as tookMs. Wall-clock is a bit higher because it includes the network hop to you. Profiles and companies come back in about a second.
People search (beta) is the slower surface, usually about 1 to 3 seconds, because it runs a discovery pass and returns name, headline, location, and URL. Add enrich=true and each person comes back as a full profile in the same call.
Short version: logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, and that is the lane this method sits in. Here is the factual background, with sources, not legal advice.
Start with the method, because the method is what the cases turn on. CrustAPI reads public pages, signed out, with no accounts, no fake profiles, and no CAPTCHA solving. It only reads what any signed-out visitor sees.
In hiQ Labs v. LinkedIn, the Ninth Circuit held in 2019, and reaffirmed on April 18, 2022, that scraping data from a public website is not access "without authorization" under the Computer Fraud and Abuse Act.
The caveat: hiQ ultimately lost on contract, not on hacking. A court found it had breached the User Agreement it had signed, including by using fake accounts, and it settled for $500,000 and shut down.
Two more recent rulings point the same way for logged-off data. On January 23, 2024, in Meta v. Bright Data, a federal court ruled that the Facebook and Instagram terms do not bar logged-off scraping of public data.
On May 9, 2024, in X Corp. v. Bright Data, the court dismissed X's claims, finding attempts to block copying of public data preempted by federal copyright law.
The way to hold all of this in your head is the gate. Reading a public, logged-out page walks through an open door; logging in, or faking accounts to log in, crosses an authorization gate. That is why the account-based approach carries risk that public reading does not.
The Bright Data rulings are district-court decisions, so they are persuasive, not nationwide binding precedent, and the X ruling was on a motion to dismiss. They turned on those platforms' specific terms. The fair way to say it is that logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, not that scraping is legal or that the law is settled. This is background, not legal advice; check your own use with a lawyer.
You can run real work on the free tier before you pay anything, and paid funds do not expire on you.
No card. Resets each month; it does not stack. Enough to test on real profiles for real.
LinkedIn Person, Company and Posts cost $6.00 per 1,000 successful requests at standard prices, down to $1.50 for the largest deposit. Work email lookup is included. People with Full profiles uses that rate per full profile returned. Empty and inaccessible results are free. Paid funds never expire.
| Deposit | Google Search / 1,000 requests | Maps / 1,000 businesses | LinkedIn reads / 1,000 requests | People, Jobs, Refresh / 1,000 units |
|---|---|---|---|---|
| $10+ | $1.00 | $1.96 | $6.00 | $1.96 |
| $149+ | $0.76 | $1.49 | $4.50 | $1.49 |
| $549+ | $0.56 | $1.10 | $3.30 | $1.10 |
| $1,999+ | $0.41 | $0.80 | $2.45 | $0.80 |
| $6,500+ | $0.33 | $0.65 | $1.95 | $0.65 |
| $27,500+ | $0.28 | $0.55 | $1.65 | $0.55 |
| $50,000+ | $0.26 | $0.50 | $1.50 | $0.50 |
| $100,000+ | $0.20 | $0.40 | $1.50 | $0.40 |
Every eligible account gets $6 of free usage monthly. Each deposit keeps its prices until spent; paid funds never expire. People and Jobs bill per successful search, Refresh per accessible profile. Full profiles in People use the read rate per full profile. See all billing details.
Larger deposits unlock lower endpoint prices. Each deposit keeps its prices until spent. See the full deposit table on the pricing page. Prices in USD, ex-tax.
Pay only for results at the applicable endpoint rate. Google Search bills per successful request and Maps per business returned. LinkedIn reads bill per successful request, People and Jobs per successful search, Refresh per accessible profile, and enriched People per full profile. Empty and failed requests are free. The pricing page lists every rate.
You can read public, logged-out profile pages without an account, and that is what CrustAPI does. The catch with doing it yourself is that LinkedIn walls signed-out browsing after a handful of profile views and throttles by IP at volume. CrustAPI handles the public pages and hands you clean JSON, with no LinkedIn login and no session cookie in the loop.
From a public profile you can get name, headline, current title and company, location, follower count, the public connection count, full work history with dates, education with dates, photo, banner, and the public URL. Skills, languages, and awards come through when the profile lists them. Email is not on the public page, so no logged-out method returns it, including ours.
No. CrustAPI does not use any LinkedIn login or session cookie. It reads only public, logged-out pages. That is different from tools like PhantomBuster, Unipile, or Lix, which run through your own LinkedIn account and can put that account at risk.
There is no account to ban, because the no-cookie method never logs in. Nothing of yours is in the loop, so nothing of yours can be restricted. Cookie-based tools are different: they run through your real session, so the account carrying the risk is yours.
Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, and that is the lane this method sits in. In hiQ v. LinkedIn the Ninth Circuit held that scraping a public website is not access without authorization under the CFAA, and district courts in Meta v. Bright Data and X Corp. v. Bright Data ruled for the scraper on those platforms' terms. Those rulings turned on specific terms, so this is not the same as scraping being settled law. This is background, not legal advice; check your own use with a lawyer.
On July 15, 2026 a public profile returned in 796ms of server time, with wall-clock around 1.38 seconds including the network hop. A company page was similar at 793ms. Jobs came back in 486ms and posts in about 1.45 seconds. People search (beta) is slower, usually about 1 to 3 seconds, because it runs a discovery pass first.
LinkedIn Person, Company and Posts cost $6.00 per 1,000 successful requests at standard prices, down to $1.50 for the largest deposit. Work email lookup is included. People with Full profiles uses that rate per full profile returned. Empty and inaccessible results are free. Paid funds never expire.
No. A signed-out LinkedIn profile does not show an email, so the endpoint does not return one. If a tool claims a work email from a public profile alone, treat that claim with caution.
Five: type=profile for a person by URL, type=company for a company page, type=posts for recent public posts, type=jobs for a keyword job search or a single job, and type=search for people by keyword (beta). Add enrich=true on people search to get each person's full profile in the same call.
Point one GET request at a public profile and get clean JSON back. No cookie, no account, no proxy pool to babysit. Test it free and see the receipt for yourself.
Try for free