Discover/Deel API
live

Deel APIjobs.deel.com ↗

Retrieve published job postings and application form definitions from any Deel-hosted job board. Two endpoints return titles, locations, compensation, and form fields.

Endpoint health
verified 3d ago
list_job_postings
get_application_form
2/2 passing latest checkself-healing
Endpoints
2
Updated
3d ago

What is the Deel API?

The jobs.deel.com API provides 2 endpoints that expose every published job posting on a Deel-hosted job board alongside the full application form definition for any individual listing. list_job_postings returns all active postings in a single call — including titles, work arrangements, locations, departments, and compensation ranges where disclosed — while get_application_form delivers the complete form structure with section-level field metadata for a given posting.

This call costs1 credit / call— charged only on success
Try it
Company slug from the job board URL, the path segment right after jobs.deel.com (e.g. dfns).
Job posting UUID from list_job_postings.postings[*].job_posting_id (also the segment after /job-details/ in the job board URL).
→ api.parse.bot/scraper/c6a40cb4-fd8e-47cd-aa6b-cd9ec2442897/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c6a40cb4-fd8e-47cd-aa6b-cd9ec2442897/get_application_form?org_slug=dfns&job_posting_id=57111b23-a6c4-4c50-8ecd-ba49b80e088a' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 2 totalmissing one? ·

Returns the application form for one job posting on a Deel-hosted job board in a single round trip. The result carries job summary data (title, work arrangement, employment types, locations, departments, teams, compensation range when the posting shows it), form metadata, and three field groups: personal_information (first name, last name, email, phone with the site's required flags), profile (LinkedIn profile URL and the resume upload, present only when the form shows a resume field), and details, an array of the employer's custom question sections in display order, each with its questions (label, question type such as Paragraph, required and rich-text flags, options when the question type has choices). Standard personal/profile field keys are fixed by the site; custom questions carry the site's question ids. Posting ids come from list_job_postings. A posting id that does not resolve to a published job on that board (including a posting that has since been closed) yields a stale_input not-found error; a malformed id or slug yields a stale_input format error.

Input
ParamTypeDescription
org_slugrequiredstringCompany slug from the job board URL, the path segment right after jobs.deel.com (e.g. dfns).
job_posting_idrequiredstringJob posting UUID from list_job_postings.postings[*].job_posting_id (also the segment after /job-details/ in the job board URL).
Response
{
  "type": "object",
  "fields": {
    "job": "object: work_arrangement, employment_types[], locations[], departments[], teams[], compensation {currency, min_amount, max_amount} or null when hidden",
    "form": "object: application form id, title, description (may be null), status, revision_id, updated_at",
    "job_id": "underlying job UUID on the employer's Deel account",
    "org_slug": "job board slug as passed in",
    "sections": "object with personal_information {title, fields[]}, profile {title, fields[]}, details[] (custom sections: id, title, page_title, fields[])",
    "job_title": "posting title",
    "job_posting_id": "posting UUID as passed in",
    "demographic_section": "object: title and helper_text of the voluntary demographic section configured on the form",
    "sections.profile.fields": "array of {key, label, type, required, accepted_formats (file fields only)}",
    "sections.details[].fields": "array of {id, label, type, required, rich_text, options (null unless the question type has choices), sensitive}",
    "sections.personal_information.fields": "array of {key, label, type, required}"
  },
  "sample": {
    "data": {
      "job": {
        "teams": [
          "Marketing"
        ],
        "locations": [
          "Paris"
        ],
        "departments": [
          "Departments"
        ],
        "compensation": {
          "currency": "USD",
          "max_amount": 240000,
          "min_amount": 140000
        },
        "employment_types": [
          "Full-time"
        ],
        "work_arrangement": "REMOTE"
      },
      "form": {
        "id": "75ed2968-a161-4f08-a8db-ce29a89eb296",
        "title": "Default Application Form",
        "status": "PUBLISHED",
        "updated_at": "2026-07-14T16:04:24.613Z",
        "description": null,
        "revision_id": "411cc724-1d7f-4d4f-8e74-9819349a285a"
      },
      "job_id": "2b9876dc-373f-4af0-a648-7de75c9a401f",
      "org_slug": "dfns",
      "sections": {
        "details": [
          {
            "id": "3db7f0d8-61f9-43ef-ad8f-a25fb325892c",
            "title": "Untitled section",
            "fields": [
              {
                "id": "74c0714c-1dc0-472d-b70c-1b766b163754",
                "type": "Paragraph",
                "label": "Cover letter",
                "options": null,
                "required": false,
                "rich_text": false,
                "sensitive": false
              }
            ],
            "page_title": "Page name 1"
          }
        ],
        "profile": {
          "title": "Profile",
          "fields": [
            {
              "key": "linkedin_profile_url",
              "type": "url",
              "label": "LinkedIn profile",
              "required": true
            },
            {
              "key": "resume",
              "type": "file",
              "label": "Please upload your resume (preferably as a PDF file)",
              "required": true,
              "accepted_formats": [
                ".PDF"
              ]
            }
          ]
        },
        "personal_information": {
          "title": "Personal information",
          "fields": [
            {
              "key": "first_name",
              "type": "text",
              "label": "First name",
              "required": true
            },
            {
              "key": "last_name",
              "type": "text",
              "label": "Last name",
              "required": true
            },
            {
              "key": "email",
              "type": "email",
              "label": "Email",
              "required": true
            },
            {
              "key": "phone_number",
              "type": "phone",
              "label": "Phone number",
              "required": false
            }
          ]
        }
      },
      "job_title": "Head of Marketing",
      "job_posting_id": "2b1bc708-414d-4ad1-870f-bd3f608f6cf5",
      "demographic_section": {
        "title": "Demographic information",
        "helper_text": "Completion of the demographic information is entirely voluntary and will not influence any employment-related decision-making. The information you choose to provide will be aggregated and used solely for analytical and reporting purposes. All personal data will be maintained confidentially and in compliance with applicable personal data protection laws."
      }
    },
    "status": "success"
  }
}

About the Deel API

What the API covers

Both endpoints target Deel-hosted job boards at jobs.deel.com. Each board is identified by an org_slug — the path segment immediately after jobs.deel.com in the board URL (for example, dfns from jobs.deel.com/dfns). There is no pagination: list_job_postings returns the full set of currently published postings for the given org in one response, along with a total count and per-posting metadata including job_posting_id, form_id, created_at, updated_at, and a job object containing work_arrangement, employment_types, locations, departments, teams, and a compensation object with currency, min_amount, and max_amount.

Application form structure

get_application_form accepts org_slug and a job_posting_id (the UUID returned by list_job_postings) and returns the complete form definition. The response groups fields into three named sections: personal_information (standard contact fields), profile (file-upload fields with accepted_formats), and details — an array of custom sections, each carrying an id, title, page_title, and a fields array. Each custom field includes id, label, type, required, rich_text, an options array (non-null for choice-type questions), and a sensitive flag. A separate demographic_section object exposes the title and helper_text of the voluntary demographic section when one is configured on the form.

Identifiers and linking

Every posting carries both a job_posting_id (the UUID that get_application_form consumes) and a job_id (the underlying job UUID on the employer's Deel account). The org_slug is echoed back in every response, making it straightforward to attribute results when querying multiple boards. Compensation data is included in the response structure regardless of endpoint, but the min_amount and max_amount values are only populated when the posting's public listing actually discloses a salary range.

Reliability & maintenanceVerified

The Deel API is a managed, monitored endpoint for jobs.deel.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobs.deel.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official jobs.deel.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate open roles across multiple Deel-hosted company boards into a unified job feed, using work_arrangement, locations, and departments fields for filtering.
  • Track when new postings appear or existing ones are updated by comparing created_at and updated_at timestamps from list_job_postings.
  • Extract compensation range data (currency, min_amount, max_amount) from postings that disclose pay to power salary benchmarking tools.
  • Map application form custom fields from sections.details[].fields to build pre-fill or form-testing automation for ATS research.
  • Monitor department-level hiring velocity for a company by counting postings grouped by departments and tracking changes over time.
  • Identify which postings include sensitive or choice-type questions (sensitive, options) in their custom detail sections for compliance auditing.
  • Build a recruiter dashboard that surfaces all active listings for a given board with their employment types and team assignments in one call.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Deel provide an official public API for jobs.deel.com job boards?+
Deel offers a public REST API at https://developer.deel.com covering contractor management, payroll, and HR workflows, but it does not include endpoints for the public job board data at jobs.deel.com. This Parse API covers the public job board surface.
What does `get_application_form` return beyond basic job details?+
get_application_form returns the full form definition broken into three sections. personal_information and profile cover standard and file-upload fields respectively. details is an array of custom sections where each field carries a type, required flag, rich_text content, options for choice questions, and a sensitive flag. A separate demographic_section object includes the title and helper text of any voluntary demographic block on the form.
Does `list_job_postings` support filtering by location, department, or employment type?+
The endpoint returns all published postings for an org in one response without server-side filters. Each posting includes locations, departments, teams, employment_types, and work_arrangement fields, so filtering can be applied client-side on the returned array.
Is historical or closed job posting data available?+
The API covers currently published postings only. Closed or expired postings are not included in list_job_postings results, and get_application_form will not return data for postings that are no longer live. You can fork this API on Parse and revise it to add an endpoint that tracks previously seen postings by caching results over time.
Can I retrieve the actual candidate applications or submission data submitted through a form?+
No submission or candidate data is exposed. The API covers the public form definition and job listing metadata — field labels, types, required flags, and options — not any responses submitted by applicants. You can fork this API on Parse and revise it to add endpoints that integrate with Deel's authenticated HR API if you need submission-level data.
Page content last updated . Spec covers 2 endpoints from jobs.deel.com.
Related APIs in JobsSee all →