SmartRecruiters APIjobs.smartrecruiters.com ↗
Retrieve the full application form structure for any SmartRecruiters job listing: sections, screening questions, consent fields, file upload rules, and apply-with integrations.
What is the SmartRecruiters API?
The get_application_form endpoint returns a single structured object with over 8 top-level fields describing the complete public application form for any SmartRecruiters job listing. Pass a company slug and numeric job ID — exactly as they appear in the jobs.smartrecruiters.com URL — and get back form sections, screening questions, consent configuration, file upload constraints, and feature flags like apply_with_linkedin and resume_parsing in one call.
curl -X GET 'https://api.parse.bot/scraper/68e78f7f-e51d-4c8c-8c47-b6b78590919b/get_application_form?job_id=744000146669819&company=Jobbatical' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the application form definition for one SmartRecruiters job listing, identified by the company slug and numeric job id that appear in the public job URL (jobs.smartrecruiters.com/<company>/<job_id>). The result is one object: job summary; an ordered list of form sections (Easy Apply, name, email, place of residence, phone, experience, education, social profiles, resume, message to hiring team — only the sections the employer configured appear) each with visible/required flags and, where the site defines them, nested sub-fields and a configuration object; the preliminary screening questions configured for the job as the site defines them (each with id, type such as text/textarea/info, label, required, diversity flag and its answer fields) — an empty array when the job has none; consent/privacy-notice scopes the applicant must accept; enabled apply-with integrations; and accepted upload extensions and size limit. Three site requests per call; no pagination. A job id the site rejects surfaces as an upstream error with the site's status code.
| Param | Type | Description |
|---|---|---|
| job_idrequired | string | Numeric job listing id from the job URL path, passed as a string. |
| companyrequired | string | Company slug exactly as it appears in the job URL path (e.g. Jobbatical in jobs.smartrecruiters.com/Jobbatical/744000146669819). |
{
"type": "object",
"fields": {
"job": "object: title, location, remote (boolean), ref_number, general_application (boolean)",
"job_id": "job id as supplied",
"company": "company slug as supplied",
"consent": "object: ask_for_consent, privacy_policy_url, privacy_policy_label (plain text), scopes (array of consent checkboxes with scope, label, required, checkbox_required)",
"features": "object of booleans: apply_with_indeed, apply_with_linkedin, apply_with_seek, resume_parsing, upload_avatar, has_inline_assessments",
"language": "form language code reported by the site",
"sections": "ordered array of form sections: key (site section key), label (human-readable section name), visible, required, optional fields (array of sub-field key/visible/required) and optional configuration object (e.g. locationType for place of residence)",
"file_upload": "object: accepted_file_extensions (comma-separated), file_size_limit_bytes (integer)",
"screening_questions": "array of preliminary screening questions as the site defines them: id, type (e.g. text, textarea, info), label, required, diversity, repeatableFields, and fields (answer fields with name, label, type, required, multipleChoice, values); empty when the job has none"
},
"sample": {
"data": {
"job": {
"title": "Senior Account Executive - k0rdent AI - Remote (EMEA)",
"remote": true,
"location": "Poznań, Poland",
"ref_number": "REF1249I",
"general_application": false
},
"job_id": "744000146468059",
"company": "Mirantis",
"consent": {
"scopes": [
{
"label": "You declare that you have read and agree to the privacy notice of Mirantis.",
"scope": "SINGLE",
"required": true,
"checkbox_required": true
}
],
"ask_for_consent": true,
"privacy_policy_url": "https://www.mirantis.com/privacy-notice-to-job-applicants-and-employees/",
"privacy_policy_label": "Here you can find details of our privacy notice."
},
"features": {
"upload_avatar": true,
"resume_parsing": true,
"apply_with_seek": true,
"apply_with_indeed": true,
"apply_with_linkedin": true,
"has_inline_assessments": false
},
"language": "en",
"sections": [
{
"key": "easyApply",
"label": "Easy Apply",
"fields": [
{
"key": "easyApplyResumeParsing",
"visible": true,
"required": false
},
{
"key": "easyApplyIndeed",
"visible": true,
"required": false
},
{
"key": "easyApplyLinkedIn",
"visible": true,
"required": false
}
],
"visible": true,
"required": false
},
{
"key": "firstAndLastName",
"label": "Personal information - name",
"visible": true,
"required": true
},
{
"key": "email",
"label": "Personal information - email",
"visible": true,
"required": true
},
{
"key": "placeOfResidence",
"label": "Personal information - place of residence",
"visible": true,
"required": true,
"configuration": {
"locationType": "CITY"
}
},
{
"key": "phoneNumber",
"label": "Personal information - phone number",
"visible": true,
"required": true
},
{
"key": "experience",
"label": "Experience",
"visible": true,
"required": false
},
{
"key": "education",
"label": "Education",
"fields": [
{
"key": "institution",
"visible": true,
"required": true
},
{
"key": "educationDates",
"visible": true,
"required": false
}
],
"visible": true,
"required": false
},
{
"key": "socialProfiles",
"label": "On the web",
"fields": [
{
"key": "linkedIn",
"visible": true,
"required": false
},
{
"key": "website",
"visible": true,
"required": false
}
],
"visible": true,
"required": false
},
{
"key": "resume",
"label": "Resume",
"visible": true,
"required": true
},
{
"key": "messageToHiringManager",
"label": "Message to the Hiring Team",
"visible": true,
"required": false
}
],
"file_upload": {
"file_size_limit_bytes": 10485760,
"accepted_file_extensions": ".doc,.pdf,.docx,.txt"
},
"screening_questions": [
{
"id": "f61bc9e9-ce2b-45ed-94e8-3a308f5afa59",
"type": "text",
"label": "What is your LinkedIn profile URL?",
"fields": [
{
"id": "value",
"name": "value",
"type": "text",
"label": "Value",
"values": [],
"required": true,
"multipleChoice": false,
"questionsFieldValues": []
}
],
"metadata": {},
"required": true,
"diversity": false,
"aiGenerated": false,
"questionsFields": [
{
"id": "value",
"name": "value",
"type": "text",
"label": "Value",
"values": [],
"required": true,
"multipleChoice": false,
"questionsFieldValues": []
}
],
"repeatableFields": false
}
]
},
"status": "success"
}
}About the SmartRecruiters API
What the Endpoint Returns
The get_application_form endpoint accepts two required parameters: company (the slug as it appears in the job URL, e.g. Jobbatical) and job_id (the numeric ID from the same URL path). The response is a single object containing a job summary with title, location, remote status, ref_number, and a general_application flag indicating whether the listing is an open application rather than a specific role.
Form Structure and Sections
The sections field is an ordered array of form sections as defined by the employer. Each section includes a key (the site's internal section identifier), a human-readable label, and visible and required flags. This lets you map exactly which fields an applicant would encounter and in what order. Alongside sections, the screening_questions array exposes any preliminary questions the employer has configured, with per-question id, type (text, textarea, info, etc.), label, required flag, and a diversity flag.
Consent, Features, and File Rules
The consent object describes whether consent is requested (ask_for_consent), the privacy_policy_url, a plain-text privacy_policy_label, and a scopes array listing each individual consent checkbox. The features object contains booleans for apply_with_indeed, apply_with_linkedin, apply_with_seek, resume_parsing, upload_avatar, and has_inline_assessments — useful for understanding which third-party apply flows are active for a given listing. The file_upload object specifies accepted_file_extensions and file_size_limit_bytes for attachment validation.
Source Coverage
SmartRecruiters is an applicant tracking system used by a wide range of employers globally. Any job listed on jobs.smartrecruiters.com with a public application form is addressable by this endpoint using the company slug and job ID from the URL. The language field in the response reflects the form language as configured by the employer.
The SmartRecruiters API is a managed, monitored endpoint for jobs.smartrecruiters.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobs.smartrecruiters.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.smartrecruiters.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Auditing employer application form complexity by counting required sections and screening questions across listings.
- Checking whether a job listing has apply_with_linkedin or apply_with_indeed enabled before directing candidates to those flows.
- Validating file upload constraints (accepted_file_extensions, file_size_limit_bytes) before submitting a resume programmatically.
- Extracting privacy policy URLs and consent scope definitions for compliance review across multiple employers.
- Detecting remote job flags and location data from the job summary field for aggregation into a remote-work job board.
- Comparing screening question types and counts across companies to benchmark application friction.
- Identifying general_application listings versus role-specific postings for candidate routing logic.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.