Extract data from a LinkedIn profile

Upload a profile saved with LinkedIn's More → Save to PDF and get the whole profile as JSON or Excel: name, headline, every job with dates, education, skills.

Drop a PDF or image here, or browse
PDF up to 50 MB · images up to 20 MB
Processed in-flight — temporary uploads are deleted after processing.

What should we pull from this linkedin profile?

Or pick specific fields

Or describe it yourself

Paste a company page URL and get industry, size, headquarters, followers and specialties. A profile URL returns only the public preview: name, headline, location and current role.

By ExtractFox team · Updated · How we test

Two real runs

Below are two things this page was built for, run through it on September 25, 2026 and shown exactly as they came back. The first is a profile saved with LinkedIn's own More → Save to PDF; the person is fictional, so you can download the file and try it yourself. The second is two real company pages, read from their public URLs.

A saved profile PDF → JSON

LinkedIn-style profile PDF for the fictional Taylor Sample: headline, summary, three jobs, education, skills, languages
Input: the profile PDF (fictional person).
ExtractFox JSON result for the Taylor Sample profile with name, headline, location, current company, experience, education, skills and languages
Output: the JSON view on this page, unedited.

Every field on the PDF came back, including the certification and both languages. Two things are worth knowing: dates come back as LinkedIn writes them ("March 2023 - Present"), not as ISO dates, unless you ask for a format in the box above the extract button; and a job with no description returns null rather than an invented one.

A company page URL → JSON

{
  "name": "Stripe",
  "tagline": "Help increase the GDP of the internet.",
  "industry": "Technology, Information and Internet",
  "company_size": "5,001-10,000 employees",
  "headquarters": "South San Francisco, California",
  "followers": 1728565,
  "website": "https://stripe.com",
  "founded": 2010,
  "specialties": [],
  "about": "Stripe builds programmable financial services."
}
linkedin.com/company/stripe, read from the public page. Unedited.
{
  "name": "Microsoft",
  "tagline": "Software Development",
  "industry": "Software Development",
  "company_size": "10,001+ employees",
  "headquarters": "Redmond, Washington",
  "followers": 29164161,
  "website": "https://news.microsoft.com/",
  "founded": null,
  "specialties": [
    "Business Software",
    "Developer Tools",
    "Home & Educational Software",
    "Tablets",
    "Search",
    "Advertising",
    "… 17 more"
  ],
  "about": "Every company has a mission."
}
linkedin.com/company/microsoft. Specialties list shortened to 6 of 23 for space; nothing else changed.

Look at what went wrong as well as what went right. Microsoft's page has no tagline in the public preview, so the model filled tagline with the industry, and the founding year isn't in the preview either, so it came back null. Stripe's page carries both. The "about" field is the first sentence only because that's what the request asked for. Follower counts move by the minute; these are the numbers on the day of the run.

What each input returns

What comes back depends on what LinkedIn shows the source, not on the extractor. A signed-out visitor, which is what a URL fetch is, sees the public preview; the saved PDF carries the full profile.

FieldProfile PDFProfile URLCompany page URLPasted text
Full name, headline, locationYesYes—If pasted
Current company and titleYesYes—If pasted
Every job with datesYesNo (login wall)—If pasted
Education, skills, certificationsYesNo (login wall)—If pasted
Industry, size band, headquarters——YesIf pasted
Followers, website, specialties——UsuallyIf pasted
Founded year, tagline——Only if the page shows themIf pasted

We don't sign in to LinkedIn and don't get around the login wall. When a field isn't in the source, you get null, not a guess.

Company pages to Excel or JSON

  1. Switch the extractor above to the URL tab and paste a company URL, for example linkedin.com/company/stripe.
  2. In the box above the extract button, list the fields you want: name, industry, company_size, headquarters, followers, website, specialties.
  3. Extract, then download JSON, or Excel/CSV if you're building a list. Each field becomes a column.
  4. For more than a handful, send each URL to the REST API with the same field list; the schema stays identical row to row, so the results stack into one sheet.

If you need thousands of company pages a day, a dedicated scraper is the better tool. Apify's LinkedIn Company API actor, for instance, takes up to 1,000 URLs per run, needs no login, and is priced from $4.85 per 1,000 companies. It returns a fixed set of fields. This page is for the other case: a few dozen companies, your own field names, and the same tool for the PDFs and pasted text that sit next to them.

Full name and current employer

The public preview of a profile, the static HTML LinkedIn serves before login, carries the name, the headline, the location and the current employer. That's why a profile URL is enough when those are all you need: paste it, pick "Full name & basics", and you get full_name, headline, location, current_company and current_title. If the headline says "Product Manager at Acme" but the experience block says otherwise, the PDF is the source of truth, because the headline is free text the person wrote.

LinkedIn URL path extraction

Sometimes the job is only the URL: turning linkedin.com/in/taylor-sample-demo into a stable key before an import. LinkedIn URLs follow a small set of patterns, and a regular expression is the right tool, not an extractor:

URLTypeIdentifier
linkedin.com/in/taylor-sample-demoPersontaylor-sample-demo
linkedin.com/company/stripeCompanystripe
linkedin.com/school/university-of-texas-at-austinSchooluniversity-of-texas-at-austin
linkedin.com/posts/taylor-sample-demo_launch-activity-7440011668937568257-kuzlPosttaylor-sample-demo (author), 7440011668937568257 (activity id)
const m = url.match(/linkedin\.com\/(in|company|school)\/([^/?#]+)/i);
// m[1] → "in", m[2] → "taylor-sample-demo"

const post = url.match(/linkedin\.com\/posts\/([^_/]+)_.*activity-(\d+)/i);
// post[1] → author, post[2] → activity id
Username from an /in/ path, and the identifier from any of the types above (JavaScript; the same pattern works in Python's re).

When the URL is buried in a document (a CV, an exported spreadsheet, a JSON file from another tool), use the "URL path segment" option above: it returns profile_url, the public identifier and the profile type. To pull LinkedIn URLs out of a JSON file you already have, jq does it in one line: jq -r '.. | strings | select(test("linkedin\\.com/"))' file.json.

LinkedIn ads data to JSON

Ad performance isn't on a profile or a company page, so no URL will return it. LinkedIn's own route is Campaign Manager: select the accounts, set the time range, press Export, and pick a report type (campaign, ad, conversion or demographics performance), which downloads as CSV. To turn that CSV into JSON with your own field names, paste its contents into the Text tab above and describe the fields, e.g. "one object per ad: ad_name, impressions, clicks, spend, conversions".

Sources

Frequently asked questions

How do I extract data from a LinkedIn profile?+

Open the profile, choose More → Save to PDF, and upload the file here. That PDF is the only source that carries dated work history, education and skills. You can also paste the visible profile text, or try the URL if the headline fields are all you need.

How do I convert a LinkedIn profile to JSON?+

Paste the profile text or upload a saved LinkedIn PDF, choose Profile to JSON, and run extraction. ExtractFox returns a nested JSON object with full_name, headline, location, current company, experience, education, skills, certifications, and languages.

Can I paste a LinkedIn profile URL and have it scraped?+

No — and it is worth being precise about why. We fetch only the public page LinkedIn serves to a signed-out visitor, which contains the preview block: name, headline, location, current company and role. Work history with dates, education, skills and certifications sit behind the login wall, so a URL returns them empty. We do not log in, and we do not bypass the wall. For those fields, save the profile to PDF.

How do I extract LinkedIn profile data to Excel?+

Save the profile to PDF, drop it here, and download the result as .xlsx. For batch processing many profiles, the API accepts each profile PDF and returns the same stable schema.

What's the difference between this and the resume extractor?+

Same engine, slightly different schema. LinkedIn profiles include headline, current company, and tenure breakdowns more reliably than free-form CVs. If you have both a resume PDF and a LinkedIn PDF for the same candidate, run both and merge.

Is this allowed under LinkedIn's terms of service?+

Saving a profile to PDF for personal review is generally safer than mass-scraping profile URLs. Use URL extraction for occasional public pages you are allowed to access, and avoid automated bulk scraping that violates LinkedIn's terms.

Related extractors

From the blog