HR Tech API

Resume Parsing API — AI CV Parser That Returns Structured JSON

Send a resume file — PDF, DOC/DOCX, RTF, TXT or even a photo — and get back one consistent JSON document: candidate profile, work history, education, skills and languages. No templates to maintain, no per-layout rules. The AI parser adapts to any CV format in 80+ languages.

PDF, DOCX, RTF, TXT & scanned images
One JSON schema for every resume layout
Async REST API — status URL or webhooks

14-day trial · 100,000 words included · No credit card required

See the CV Parser in Action

Run a real parsing job on a sample resume — straight from this page.

Try it live — no signup needed

Live demo

Pick a sample document and watch this API process it in real time.

Demo runs on bundled sample documents. Want to test your own files? Start a free trial

That was a live API response. Get your own API key and 100,000 free trial words — no credit card required.

Double opt-in, unsubscribe anytime.

Try it live — no signup needed

Live demo

Pick a sample resume, paste a job description and watch the AI score the match.

Demo runs on bundled sample documents. Want to test your own files? Start a free trial

That was a live API response. Get your own API key and 100,000 free trial words — no credit card required.

Double opt-in, unsubscribe anytime.

How the Resume Parsing API Works

One multipart POST in, structured JSON out — fully asynchronous.

1

POST the CV file

Send a PDF, DOC/DOCX, TXT, RTF or image (JPG/PNG/TIFF) up to 100 MB to /api/v1/hr/parse_resume with your Bearer token.

2

Get a status URL

The API responds immediately with 202 Accepted and a status_url for the queued parsing job — no blocking, no timeouts.

3

Poll or get a webhook

Poll the status URL (or pass a webhook URL header) until the job status flips to success. Typical jobs finish in seconds.

4

Read structured JSON

Receive the parsed candidate as a consistent JSON schema: personal details, work history, education, skills, certificates and languages.

Call it from any stack

Submit a job, poll the status URL, get structured JSON. SDKs available for PHP, Laravel, Python, Node.js, .NET and Flutter.

curl -X POST "https://sharpapi.com/api/v1/hr/parse_resume" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file": "@resume.pdf", "language": "English"}'
$response = Http::withToken('YOUR_API_KEY')
    ->post('https://sharpapi.com/api/v1/hr/parse_resume', {"file": "@resume.pdf", "language": "English"});

$statusUrl = $response->json('status_url'); // poll until status = success
import requests

response = requests.post(
    "https://sharpapi.com/api/v1/hr/parse_resume",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"file": "@resume.pdf", "language": "English"},
)
status_url = response.json()["status_url"]  # poll until status == "success"
{
    "data": {
        "type": "api_job_result",
        "id": "50fa96a0-3e34-4323-be84-6ed602b00925",
        "attributes": {
            "status": "success",
            "type": "hr_parse_resume",
            "result": {
                "candidate_name": "Jack Doe",
                "candidate_email": "johndoe@gmail.com",
                "candidate_phone": "+1 888 888 8888",
                "candidate_address": "",
                "candidate_language": "English",
                "candidate_spoken_languages": [
                    "English"
                ],
                "candidate_honors_and_awards": [
                    "Third best project in Machine Learning Practical by IBM"
                ],
                "candidate_courses_and_certifications": [],
                "candidate_linkedin": "",
                "candidate_github": "",
                "candidate_twitter": "",
                "candidate_website": "",
                "candidate_date_of_birth": null,
                "candidate_nationality": "",
                "candidate_summary_objective": "",
                "work_authorization": "",
                "years_of_experience": 2,
                "approximate_age": null,
                "brief_summary": "John Doe is a skilled software engineer with experience in Android development and a strong academic background in artificial intelligence and computer science.",
                "drivers_licenses": [],
                "interests_hobbies": [],
                "projects": [
                    {
                        "project_name": "Image Classification",
                        "description": "Classified images of handwritten digits and letters from the MNIST and EMNIST datasets using deep neural networks. Implemented models with different activation functions, weight initialization strategies, and learning rules.",
                        "url": ""
                    },
                    {
                        "project_name": "Speaker Independent Digit Recognition",
                        "description": "Recorded voiced English digits and parameterized the collected waveform files as MFCCs. Constructed a speaker-dependent, and -independent speech recognizer using the Hidden Markov Model Toolkit (HTK).",
                        "url": ""
                    }
                ],
                "volunteer_experience": [],
                "publications": [],
                "references": [],
                "positions": [
                    {
                        "position_name": "Software Engineer Internship",
                        "company_name": "Google Inc.",
                        "country": "Japan",
                        "start_date": "2017-05-01",
                        "end_date": "2017-07-31",
                        "skills": [
                            "Android",
                            "Google Maps",
                            "Interactive screenshot code generator"
                        ],
                        "job_details": "Designed and implemented an interactive screenshot code generator for Android Google Maps."
                    },
                    {
                        "position_name": "Visiting Student Research Internship",
                        "company_name": "Brown University",
                        "country": "USA",
                        "start_date": "2017-01-01",
                        "end_date": "2017-04-30",
                        "skills": [
                            "Statistical analysis",
                            "User interactions",
                            "Crowdsourcing system"
                        ],
                        "job_details": "Performed statistical analysis on user interactions for the crowdsourcing system 'Drafty' HCOMP 2017. Advisor: Jeff Huang."
                    },
                    {
                        "position_name": "Software Engineer Internship",
                        "company_name": "Google Inc.",
                        "country": "Japan",
                        "start_date": "2016-09-01",
                        "end_date": "2016-12-31",
                        "skills": [
                            "Android",
                            "Chrome",
                            "WebView",
                            "Language locales",
                            "Han character unification"
                        ],
                        "job_details": "Created support for multiple language locales in Android Chrome and WebView. Fixed Han character unification in Android Nougat. Made locales consistent across all Chrome supported Android Versions."
                    },
                    {
                        "position_name": "Summer Trainee Engineering Program Internship",
                        "company_name": "Google Inc.",
                        "country": "Japan",
                        "start_date": "2015-05-01",
                        "end_date": "2015-09-30",
                        "skills": [
                            "Bug assignment system",
                            "Google's internal bug organizer"
                        ],
                        "job_details": "Improved the bug assignment system in Google’s internal bug organizer."
                    }
                ],
                "education_qualifications": [
                    {
                        "school_name": "The University of Edinburgh, School of Informatics",
                        "school_type": "University or equivalent",
                        "degree_type": "Master's Degree or equivalent",
                        "faculty_department": "",
                        "specialization_subjects": "Artificial Intelligence",
                        "country": "United Kingdom",
                        "start_date": "2017-09-01",
                        "end_date": "2018-11-30",
                        "learning_mode": "In-person learning",
                        "education_details": "Master of Science with Distinction in Artificial Intelligence."
                    },
                    {
                        "school_name": "University of Toronto, Faculty of Arts and Sciences",
                        "school_type": "University or equivalent",
                        "degree_type": "Bachelor's Degree or equivalent",
                        "faculty_department": "",
                        "specialization_subjects": "Computer Science and Mathematics",
                        "country": "Canada",
                        "start_date": "2012-08-01",
                        "end_date": "2016-06-30",
                        "learning_mode": "In-person learning",
                        "education_details": "Honors Bachelor of Science with Distinction in Computer Science and Mathematics."
                    },
                    {
                        "school_name": "Waseda University, School of Fundamental Science and Engineering",
                        "school_type": "University or equivalent",
                        "degree_type": "N/A",
                        "faculty_department": "",
                        "specialization_subjects": "",
                        "country": "Japan",
                        "start_date": "2014-08-01",
                        "end_date": "2015-07-31",
                        "learning_mode": "In-person learning",
                        "education_details": "One year Exchange Program (University of Toronto)."
                    }
                ]
            }
        }
    }
}

Full API documentation »

Who Builds on the CV Parser API

Anywhere resumes arrive as files and your product needs data.

Applicant Tracking Systems

Auto-fill candidate profiles the moment a CV lands. Kill manual re-typing and broken upload forms.

CV upload → candidate record in 1 call

Job Boards

Let applicants register with a resume instead of a 20-field form. Higher signup conversion, cleaner profiles.

resume.pdf → prefilled application

HR SaaS Platforms

Add "import from CV" to onboarding, employee records or skills inventories without training your own models.

DOCX → {skills[], positions[]}

Staffing & Recruitment Agencies

Bulk-parse inbox attachments and legacy CV databases into a searchable, structured candidate pool.

10k legacy CVs → searchable JSON

Talent Marketplaces

Normalize freelancer and contractor CVs into comparable profiles for matching and ranking algorithms.

any layout → one schema

Background Screening Tools

Extract employers, roles and date ranges to drive verification workflows and detect employment gaps.

work history → verification queue

Looking for more HR endpoints? Browse the HR Tech API catalog →

Why Developers Pick This Resume Parser

Deterministic JSON schema

Every resume maps to the same field structure — personal data, positions, education, skills, certificates, languages. Your parser-side code never changes.

80+ languages

Parse CVs in English, German, Polish, Spanish, Arabic, Japanese and dozens more — including mixed-language documents — with optional output normalization.

Async with webhooks

202-and-poll by default; add a webhook URL header and get called back when the job finishes. Built for bulk pipelines.

OCR included

Scanned and photographed resumes go through OCR automatically — no separate OCR vendor, no extra fee, one endpoint for text and image files.

Per-word pricing, no per-page fees

You pay for processed words, not per document or per page. Long CVs, short CVs — the cost tracks the actual content.

GDPR & SOC 2 Type II

Candidate data is processed transiently, never used for model training, and covered by audited SOC 2 Type II controls.

SharpAPI SOC 2 Type II

SharpAPI est maintenant Conforme SOC 2 Type II. Vous pouvez vérifier les détails sur notre Portail du Centre de Confiance.

Vos données sont vos données. Découvrez comment nous les protégeons et respectons les normes mondiales de confidentialité dans notre Politique de gestion des données et de conformité .

Predictable pricing from $50/month

14-day free trial with 100,000 words included. No credit card required. 30-day money-back guarantee on your first payment.

Resume Parsing API — FAQ

PDF, DOC, DOCX, TXT, RTF and scanned images (JPG, JPEG, PNG, TIFF) up to 100 MB per file. Scanned or photographed resumes are OCR-processed before AI extraction, so image-only CVs parse just as well as text-based ones.

The API returns one consistent JSON schema for every resume: candidate personal details (name, email, phone, address, links), a position history with employers, roles and date ranges, education entries, skills, certificates and language proficiencies. The schema stays identical regardless of the resume layout or language.

The parser handles resumes in 80+ languages and mixed-language documents. You can also request the structured output normalized to a specific language using the optional language parameter.

Asynchronous. You POST the file, get a job status URL back immediately, then poll it or register a webhook to be notified when parsing completes. This keeps your request threads free and handles large files gracefully. Most resumes parse in a few seconds.

Pricing is based on processed words, not per page or per document — plans start at $50/month and a 14-day free trial includes 100,000 words with no credit card required. A typical two-page resume costs a fraction of a cent-per-page vendor lock-in model.

Yes. SharpAPI is SOC 2 Type II certified, GDPR compliant, and uploaded resumes are processed transiently — your data is your data and is never used to train models. See the Data Handling and Compliance policy for details.

Ship Resume Parsing This Week

Grab an API key, POST your first CV, and get structured candidate JSON back in seconds.

Aucune carte de crédit requise