Resume Parser API

v1.0

AI-powered API that extracts 20+ structured fields from any resume: contact details, work history, skills, education, and more.

Overview

Resume Parser API automates the tedious process of manually entering candidate information from resumes into your systems. Upload a PDF, DOCX, image, or archive, and receive clean structured JSON ready to import into your ATS, CRM, or recruitment workflow.

🤖 AI-Powered

Frontier models extract 20+ fields regardless of layout or template

📄 All Formats

PDF, DOCX, JPEG, PNG, ZIP, and 7z — one unified endpoint

📸 OCR Included

Process scanned PDFs and resume photos directly

💡 Perfect For

  • • Recruitment agencies and ATS platforms automating candidate data entry
  • • HR departments eliminating manual profile creation
  • • Job boards and HRIS platforms normalizing candidate profiles
  • • Staffing firms processing high volumes of applications

Quick Start

Base URL

https://api.cparse.com/resume/v1

Authentication

http
X-API-Key: YOUR_API_KEY

Get your API key from the dashboard. New accounts include free credit — no credit card required.

Quick Example

Upload a resume and extract all fields:

cURL

bash
curl --request POST \
  --url https://api.cparse.com/resume/v1/parse \
  --header 'X-API-Key: YOUR_API_KEY' \
  --form 'file=@resume.pdf'

Endpoints

GET/health

Health check endpoint. Returns service status.

Response
json
{ "status": "ok", "service": "resume-parser", "version": "0.1.0" }
POST/parse

Parse a resume file and return structured JSON with all extracted fields.

Request
  • Content-Type: multipart/form-data
  • file (required): PDF, DOCX, JPEG, PNG, or ZIP / 7z archive containing one of the above
Response
json
[
  {
    "success": true,
    "file_name": "resume.pdf",
    "data": {
      "name": "Jane Smith",
      "headline": "Senior Software Engineer",
      "email": "jane.smith@example.com",
      "phone": "+12025551234",
      "linkedin": "https://linkedin.com/in/janesmith",
      "links": ["https://github.com/janesmith"],
      "location": "San Francisco, CA",
      "summary": "Experienced full-stack engineer with 7 years...",
      "skills": ["python", "javascript", "react", "aws", "docker"],
      "languages": [
        { "language": "English", "proficiency": "Native" },
        { "language": "Spanish", "proficiency": "B2" }
      ],
      "certifications": ["AWS Certified Solutions Architect - Associate (2023)"],
      "experience": [
        {
          "title": "Senior Software Engineer",
          "company": "Tech Corp",
          "location": "San Francisco, CA",
          "employment_type": "Full-time",
          "work_style": "Hybrid",
          "start_date": "2021-03",
          "end_date": "Present",
          "description": "- Led development of microservices architecture.\n- Reduced deploy time by refactoring CI/CD pipelines.",
          "tech_stack": ["react", "node.js", "aws", "docker"]
        }
      ],
      "education": [
        {
          "degree": "BSc Computer Science",
          "institution": "University of Edinburgh",
          "date": "2019"
        }
      ],
      "projects": [
        {
          "name": "OpenRecruite",
          "description": "Open-source ATS built with Next.js",
          "technologies": ["next.js", "postgres", "prisma"]
        }
      ]
    },
    "ocr_used": false,
    "pages_processed": 2
  }
]

Response Fields

FieldTypeDescription
namestringFull name
headlinestringProfessional headline or current title
emailstringPrimary email address
phonestringPhone number in E.164 format (+12025551234)
linkedinstringFull LinkedIn profile URL
linksstring[]Other URLs: GitHub, portfolio, personal site, etc.
locationstringCity, Country or full location string
summarystringProfessional summary or profile text
skillsstring[]Skills — lowercase, deduplicated (technical and soft)
languagesobject[]Spoken languages with optional proficiency level
certificationsstring[]Certifications, with year in parentheses if present
coursesobject[]Courses with name, optional provider and date
experienceobject[]Work history — see structure below
educationobject[]Education: degree, institution, date
projectsobject[]Projects: name, description, technologies
publicationsobject[]Publications: title, publisher, date
awardsobject[]Awards: title, issuer, date
volunteeringobject[]Volunteering: role, organization, dates, description
patentsobject[]Patents: title, patent_number, date
talksobject[]Talks: title, event, date
professional_affiliationsobject[]Memberships: organization, role, dates
refereesobject[]References: name, title, organization, phone, email

Experience Object

FieldTypeDescription
titlestringJob title
companystringCompany name
locationstringGeographic location (City, Country)
employment_typestringFull-time, Contract, Freelance, Internship, etc.
work_stylestringRemote, Hybrid, or On-site
start_datestringYYYY-MM or YYYY
end_datestringYYYY-MM, YYYY, or "Present"
descriptionstringFull role description — bullet points joined with \n
tech_stackstring[]Technologies used specifically in this role

Error Handling

StatusErrorSolution
400No file providedInclude a file in the multipart form body
400Invalid or corrupted archiveEnsure archive contains exactly one supported file
401Authentication requiredPass X-API-Key header with a valid key
413File size exceeds limitReduce the file size and retry
413Document exceeds page limitSplit the document and retry
413Image dimensions exceed limitResize image to 2048px or smaller per side
415Unsupported file typeUse PDF, DOCX, JPEG, PNG, ZIP, or 7z
415Image processing requires OCR supportUse a text-based PDF or DOCX for best results
500AI processing failedRetry or contact support

Tips

📌 Best Practices

  • Images and scanned PDFs — JPEG/PNG resumes and scanned PDFs use OCR. Images must be 2048px or smaller on each side.
  • Image size limit — Resize images to 2048px or smaller before uploading.
  • Omit vs. null — Fields absent from the resume are omitted from the response entirely, not returned as null.
  • Tech stack vs. skills skills lists all skills across the resume. tech_stack inside each experience entry lists technologies specific to that role.
  • Archives — ZIP and 7z archives must contain exactly one supported file. Multiple files are rejected.

🔒 Security & Privacy

  • ✅ Files processed in memory, never written to disk or stored
  • ✅ All requests over HTTPS
  • ✅ API key authentication required on every request
  • ✅ GDPR and CCPA compliant

Code Examples

Python

python
import requests

url = "https://api.cparse.com/resume/v1/parse"
headers = {"X-API-Key": "YOUR_API_KEY"}

with open("resume.pdf", "rb") as f:
    response = requests.post(url, files={"file": f}, headers=headers)

result = response.json()
resume = result[0]["data"]
print(resume.get("name"), resume.get("email"))
print("Skills:", resume.get("skills"))
print("Experience:", len(resume.get("experience", [])), "roles")

JavaScript (Node.js)

javascript
import FormData from 'form-data';
import fs from 'fs';
import axios from 'axios';

const form = new FormData();
form.append('file', fs.createReadStream('resume.pdf'));

const response = await axios.post(
  'https://api.cparse.com/resume/v1/parse',
  form,
  {
    headers: {
      ...form.getHeaders(),
      'X-API-Key': 'YOUR_API_KEY',
    },
  }
);

const [result] = response.data;
const { name, email, skills, experience } = result.data;
console.log(name, email);
console.log('Skills:', skills);
console.log('Experience:', experience?.length, 'roles');