Resume Parser API

Resume Parser API

Parses any resume/CV into JSON text using Natural Language Processing (NLP) techniques.
Free Plan $0.00 Monthly Subscribe
15 Requests / Monthly
Free for Lifetime
No Credit Card Required
Starter Plan $29.99 Monthly Subscribe
1,500 Requests / Monthly
Standard Support
Full anonymity, we do not store any data!
GDPR compliance
Fast and efficient
More than 70.000 skills identifiable
More than 26000 schools identifiable
Multilingual (Best with English)
Pro Plan $49.99 Monthly Subscribe
4,500 Requests / Monthly
Standard Support
Full anonymity, we do not store any data!
GDPR compliance
Fast and efficient
More than 70.000 skills identifiable
More than 26000 schools identifiable
Multilingual (Best with English)
Custom Plan Volume Monthly Contact Us
Any requests volume you need
Full anonymity, we do not store any data!
GDPR compliance
Fast and efficient
More than 70.000 skills identifiable
More than 26000 schools identifiable
Multilingual (Best with English)

Resume parsing API is a hosted service that takes a resume as an input that can be in PDF or MS Word format, then convert it into a structured JSON data format.

Resume in JSON format
Use cases
Extract data from any resume/CV to:
  • Search, Sort and Store resumes
  • Enhance your talent database.
  • Save time and efforts.
  • Eliminate manual intervention. Eliminate privacy issues.
  • Faster closing of open positions

Many of our users use our API for building usable datasets for an AI based job matching tool.

Resume Parser API is well tested for English language and works generates somehow acceptable results for 12 more most common languages. We have trained the parser model with more than 26.000 collage/university names and 70.000+ skills. using best in class NLP techniques, we are capable of parsing any resume/CV format out there. and try for yourself. (No credit cards needed until you upgrade to a paid plan).

Parsing a CV/resume on a URL

First, start by (free tier available), get your API key and you are ready. Next, you can test using the following cURL command. This code will fetch the sample resume in docx format located at https://.../sample_resume.docx

curl --location --request GET '' \
--header 'apikey: YOUR API KEY HERE'

The results will be as follows

    "name": "JOHN DOE",
    "email": "[email protected]",
    "skills": [
        "Computer science",
    "education": [
            "name": "RIVER BROok university",
            "dates": "2011"
    "experience": [
            "title": "Front End Developer",
            "dates": "2015",
            "location": "Camarillo",
            "organization": "DP TECHNOLOGY CORP."
            "title": "Front End Developer",
            "dates": "2015",
            "location": "Plano",
            "organization": "VOKO COMMUNICATIONS"

Parsing a CV/resume from local file

The procedure is pretty similar to what we do for parsing a resume on a URL. First, simply (free tier available), get your API key and you are done.

Use the following code to upload a resume from your computer to the service and get the resume parsed in JSON format immediately back.

curl --location --request POST '' \
--header 'Content-Type: application/octet-stream' \
--header 'apikey: YOUR API KEY HERE' \
--data-binary '@/C:/Users/test/Desktop/sample_resume.docx'

Bulk processing of resumes

If you need to parse a huge number of resumes at once, please contact us at [email protected] for competitive discounts and fanatical support.

Security and Privacy

We never store any private information on servers. The resume files uploaded to our servers are parsed and automatically deleted after 15 seconds. We never store the parsed data, nor the resume files in any of our servers and we don't share this information with any of our partners. APILayer is a business located in European Union and we totaly respect our users' privacy concerns. Check our GDPR compliance, Privacy Policy statements for more information.

If you need written consent for regulative purposes, we may arrange a signed and sealed agreement between two parties.

The service won't parse my resume!

Please note that, resume parsing depends on predictive models and can not be 100% accurate. We do our best and enhance the API's capabilities frequently. If you have any problem with a special resume/cv format, please let us know. We'll fix it fast!

Why is the price so competitive?

We are a small but neat startup company without the huge expenses of our competitors. We work harder than any other competitor in the market and try to spread the word to a bigger audience. So we keep our price lower than most of our competitors, offering the optimum price/quality ratio in the market.

and subscribe to the service. If you need a custom plan get in touch with us.

Build your own Resume Parser Using Python and NLP
Blog Article
Build your own Resume Parser Using Python and NLP

Resume Parser API Reference

This API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Just Getting Started?

Check out our development quickstart guide.


Resume Parser API uses API keys to authenticate requests. You can view and manage your API keys in the Accounts page.

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

All requests made to the API must hold a custom HTTP header named "apikey". Implementation differs with each programming language. Below are some samples.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.


Fetches and parses the resume file on URL into JSON format


url (required)

A publicly reachable URL to download the resume (pdf/docx/doc formats supported)

Location: Query, Data Type: string

** A word enclosed with curly brackets "{ }" in the code means that it is a parameter and it should be replaced with your own values when executing. (also overwriting the curly brackets).

Below is a sample response from the endpoint

If you wish to play around interactively with real values and run code, see...

Rate Limiting

Each subscription has its own rate limit. When you become a member, you start by choosing a rate limit that suits your usage needs. Do not worry; You can upgrade or downgrade your plan at any time. For this reason, instead of starting with a larger plan that you do not need, we can offer you to upgrade your plan after you start with "free" or "gold plan" options and start using the API.

When you reach a rate limit (both daily and monthly), the service will stop responding and returning the HTTP 429 response status code (Too many requests) for each request with the following JSON string body text.

"message":"You have exceeded your daily\/monthly API rate limit. Please review and upgrade your subscription plan at https:\/\/\/subscriptions to continue."

A reminder email will be sent to you when your API usage reaches both 80% and 90%, so that you can take immediate actions such as upgrading your plan in order to prevent your application using the API from being interrupted.

You can also programmatically check your rate limit yourself. As a result of each request made to the APILayer, the following 4 fields provide you with all the necessary information within the HTTP Headers.

x-ratelimit-limit-month: Request limit per month
x-ratelimit-remaining-month: Request limit remaining this month
x-ratelimit-limit-day: Request limit per day
x-ratelimit-remaining-day: Request limit remaining today

You can contact our support unit if you need any assistance with your application regarding to handle the returned result by looking at the header information.

Error Codes

APILayer uses standard HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate a clientside error, which means that failed given the information provided (e.g., a missing parameter, unauthorized access etc.). Codes in the 5xx range indicate an error with APILayer's servers (normally this should'nt happen at all).

If the response code is not 200, it means the operation failed somehow and you may need to take an action accordingly. You can check the response (which will be in JSON format) for a field called 'message' that briefly explains the error reported.

Status Code Explanation
400 - Bad Request The request was unacceptable, often due to missing a required parameter.
401 - Unauthorized No valid API key provided.
404 - Not Found The requested resource doesn't exist.
429 - Too many requests API request limit exceeded. See section Rate Limiting for more info.
5xx - Server Error We have failed to process your request. (You can contact us anytime)

You can always contact for support and ask for more assistance. We'll be glad to assist you with building your product.