ResumeJSON

LinkedIn resume parser: the three exports, and what each gives you

LinkedIn resume parser: what LinkedIn actually gives you, and how to get JSON out of it

If you are looking for a LinkedIn resume parser, the first thing to settle is which LinkedIn export you are parsing, because there are three and they are not interchangeable. LinkedIn has no public endpoint that hands a third party a member's profile, so every tool in this category starts from a file the member themselves produced: a profile PDF, a data archive, or — in some countries only — a portability API response. Each has a different shape, a different limit, and a different amount of work between it and typed JSON. All LinkedIn facts below were read from LinkedIn's own help pages as of September 2026.

We build ResumeJSON, a per-parse resume and CV parsing API, so read the last section as written by an interested party. The LinkedIn facts in the first half are checkable against the help pages linked beside them, and they are the part that decides your design.

The three exports, compared

ExportWhat you getWho can produce itThe limit that bites
Save to PDFA résumé-shaped PDF of one profileThe member, or anyone viewing that profile, on desktopEnglish profiles only; 200 downloads a month
Download your dataA ZIP of CSV files covering your own accountThe member, for their own account onlyMinutes for one category, up to 24 hours for the full archive; link expires in 72 hours
Member Portability APIsProgrammatic access to your own LinkedIn dataMembers in the EU, EEA and SwitzerlandRegional — not available to most of the world

The practical consequence: if you are building a product that ingests other people's profiles, the PDF is the only route. The archive and the portability API are self-service exports of your own account, so they can never be the input path for a job board, an ATS or a candidate-matching tool taking uploads from strangers.

Save to PDF — the one that behaves like a resume

This is the export most people mean by "LinkedIn resume". From the introduction section of a profile on desktop, More (or Resources) → Save to PDF produces a PDF laid out like a CV: headline, about, experience with dates, education, skills, certifications.

Three constraints from LinkedIn's own Save a profile as a PDF page are worth knowing before you build on it:

The file itself is an ordinary text-layer PDF, which means any parser that reads PDFs can read it. What it is not is structured: the section headings are visual, the dates are free text, and the skills are a flat run of lines. Turning it into fields is the same job as parsing any other CV, and the same tools apply — see open source resume parser for what the self-hosted options return.

Download your data — CSVs, not a resume

LinkedIn's Download your data flow lives under Settings & Privacy → Data Privacy → Download your data. You choose either specific categories or a larger archive, and LinkedIn emails a link.

Two timings decide whether this can sit inside a user-facing flow at all. LinkedIn says that for a specific data type "we'll email you within minutes", and for the larger download "you'll receive an email within 24 hours". The link then stays live for a bounded window: "The data will be available for download for 72 hours."

A 24-hour wait means this cannot be a synchronous step in a signup. If you want it in a product, it is an asynchronous import: the user requests the archive, comes back, and uploads the ZIP.

What is inside is a set of CSV files — Positions.csv, Education.csv, Skills.csv, Profile.csv and so on — one row per item. That is good news and bad news. Good: it is already tabular, so you do not need a parser to find the fields, and a few lines of CSV reading gets you most of the way. Bad: the columns are LinkedIn's, not your schema's, dates are strings in LinkedIn's own formatting, and you still have to normalise and merge the files into one candidate record. Budget for a mapping layer, not a parser.

Member Portability APIs — real, and regional

LinkedIn's data-download page also notes that "LinkedIn provides an API program to enable EU/EEA/Switzerland members to access their LinkedIn data programmatically." This is the cleanest route technically — structured data, no file handling — and it is the one you can build on for the smallest share of the world's candidates. Treat it as an optimisation for European users if you have them, never as the primary path.

What this means for your design

Putting the three together, a LinkedIn import feature usually ends up shaped like this:

Develop, support or use software, devices, scripts, robots or any other means or processes (such as crawlers, browser plugins and add-ons or any other technology) to scrape or copy the Services, including profiles and other data from the Services

A pipeline built on that is a product decision away from breaking, quite apart from the agreement.

Because the first two bullets collapse into one — parse a PDF or DOCX into fields — the "LinkedIn resume parser" you need is, in practice, just a resume parser that handles the LinkedIn PDF as one of its layouts.

Getting typed JSON out of the PDF

Two honest options, and which is right depends on whether parsing is your product.

Run a library yourself. No licence cost, no vendor, and the LinkedIn PDF is a relatively tidy input compared to a designer's CV. You own accuracy, upgrades and the long tail of layouts. Our survey of what is actually maintained is in python resume parser and open source resume parser; the short version is that the well-kept tools in this space extract text and layout rather than resume fields, so the field-mapping work is yours either way.

Call a parsing API. You post the file and get fields back. This is what we sell, so here is the specific shape rather than an argument: ResumeJSON takes a PDF, a DOCX, plain text, or a photo or scan of a CV, and returns typed JSON — name and contact details, every role with dates normalised to YYYY-MM, education, skills, certifications and languages. A field the document does not state comes back null rather than guessed, and there is no score, rank or fit judgement in the response, because there is no such field in the schema. Median parse is 2.2 seconds.

What it costs, against the LinkedIn cap

PlanPriceIncluded
Basic$0100 parses a month, a hard cap that cannot bill you
ProPay per use$0.05 a parse, no monthly fee
Ultra$29/month1,000 parses a month, overage rather than a blocked call
Mega$99/month5,000 parses a month, overage rather than a blocked call

Plans are metered and billed through RapidAPI. Worth setting beside LinkedIn's 200-PDF monthly cap: if the PDFs are being saved by hand, LinkedIn's limit binds long before any parsing plan does. At 200 profiles a month the parsing is $10 on pay-per-use, or free on Basic for the first hundred.

When you should not buy a parser at all

If your input is the data archive rather than the PDF, skip this category entirely. The CSVs are already structured; a parser adds a step and a cost to data that does not need parsing. Write the mapping layer and be done.

If you are an enterprise buying a taxonomy, matching and search alongside extraction, a per-parse API is the wrong shape and a platform vendor is the right one — see resume parsing software for how those three categories differ and which questions separate them.

Try it on a real LinkedIn PDF

The cheapest way to settle whether any of this works for your documents is to save one profile to PDF and run it. Our free parser takes a file and shows the JSON, with no signup, so you can see exactly which fields a LinkedIn export fills and which come back null before you write a line of integration code. Ten of your own files settles more than any table on this page.

All articles