ResumeJSON

Resume parser API that returns fields, not text

Send a PDF, a DOCX, plain text, or a photo or scan of the page. Get back a typed JSON resume: name, contact details, every role with normalised dates, education, skills, certifications and languages. Median parse 2.2 seconds, measured against the live endpoint.

Pricing is on RapidAPI, with a free tier for testing against your own CVs.

Why another resume parsing API

OCR gives you the words on the page. An applicant tracking system needs the fields: which company, which title, which month the role started, whether it is still current. Turning one into the other is the whole job, and it is where most resume parser APIs are either slow, wrong, or abandoned.

Fast enough to run inline

Median 2.2 s against the live endpoint, on a real two-page CV. You can parse on upload instead of queueing a job, and every response carries an X-Parse-Ms header so you can see the latency you are paying for. Size your timeout off the p90, 2.4 s over 160 parses in three separated sittings.

Dates you can sort by

start_date is always YYYY-MM or YYYY, never "Summer 2019". A role with no end date comes back with is_current: true, so a current job never reads as a job with missing dates.

It never invents

A field the CV does not state is null. No guessed job titles, no inferred skills, no country filled in from an area code. A caller cannot tell an invented value from a read one, so we do not produce them.

One request

curl -X POST 'https://resumejson-resume-cv-parser-api.p.rapidapi.com/v1/parse' \
  -H 'x-rapidapi-key: YOUR_KEY' \
  -H 'x-rapidapi-host: resumejson-resume-cv-parser-api.p.rapidapi.com' \
  -H 'content-type: application/json' \
  -d '{"text": "Sarah Okonkwo\nStaff Engineer\nsarah@example.com\n\nEXPERIENCE\nMonzo — Staff Engineer, March 2022 to Present"}'

RapidAPI shows the exact x-rapidapi-host for your subscription in the code snippet on the listing. Copy it from there — it is the authoritative value.

{
  "resume": {
    "basics": {
      "full_name": "Sarah Okonkwo",
      "email": "sarah@example.com",
      "phone": null,
      "location": null,
      "headline": "Staff Engineer",
      "links": []
    },
    "work": [
      {
        "company": "Monzo",
        "title": "Staff Engineer",
        "start_date": "2022-03",
        "end_date": null,
        "is_current": true,
        "location": null,
        "highlights": []
      }
    ],
    "education": [],
    "skills": [],
    "certifications": [],
    "languages": [],
    "total_years_experience": 4.5
  },
  "meta": { "source": "text", "characters": 118, "durationMs": 2212 }
}

What it handles

Questions

How fast is the resume parser API?

Median 2.2 seconds end to end, measured against this endpoint rather than in a lab. Every response carries an X-Parse-Ms header with the server-side time, so you can see the latency you are paying for on every call rather than taking a number off this page.

The spread is narrow: over 160 parses in three separated sittings the p90 was 2.4 seconds. Nothing runs past 45 seconds either way: the request is bounded, so past that you get a 503 with a Retry-After rather than a hung connection. Set your client timeout above that and you will never see a truncated call.

Does it work with scanned resumes?

Yes. A scanned or photographed CV has no text layer, so there is nothing to extract — the model reads the pages as images instead. You can also upload a JPEG, PNG or WebP of the page directly. It takes a few seconds rather than two, and meta.read comes back as vision so you can tell which way a document was read. Multi-page scans need to be one PDF; a single image is a single page.

What happens to the resumes I send?

They are parsed in a Cloudflare Worker and not stored. There is no database in this service.

Can I get the raw OpenAPI spec?

Yes — /openapi.json. It is the same document the reference page and the RapidAPI listing are generated from.

Can I try it before subscribing?

Yes, and without an account: the free resume parser runs your own CV through this same endpoint in the browser and shows you the JSON it returns. No signup, no key, nothing stored.

What does a parse cost?

Pricing is per request on RapidAPI, with a free tier for testing the shape of the response against your own CVs before you subscribe.