OpenText APIcareers.opentext.com ↗
Retrieve full job application form definitions from OpenText Careers — steps, fields, validation rules, dropdown options, and job-specific questions by job ID.
What is the OpenText API?
The OpenText Careers API exposes 1 endpoint, get_application_form, that returns the complete application form definition for any OpenText job listing identified by its numeric job ID. The response includes over a dozen structured fields across the form definition: ordered sections with step IDs and field counts, per-field validation rules (pattern, min/max length, data type), hidden inputs, resume upload requirements, and any job-specific questions attached to that posting.
curl -X GET 'https://api.parse.bot/scraper/8785c4a4-4553-4e5e-9562-88d07657544e/get_application_form?job_id=52075' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the full application form definition for one OpenText Careers job listing, identified by its numeric job ID (the number shown on the job page, e.g. 52075 is one shape). The result is a single object: `job` summarises the posting the form is bound to (title, location, ISO-3 country code, category, requisition template and whether the quick-apply flow is active); `resume_upload` gives the resume requirement, accepted file types and size limit; `sections` lists the application steps in order (Profile Information, My Experience, Application Questions, Review), each with `visible` (whether that step is part of this job's flow) and its `fields`; `job_specific_questions` lists the questions the recruiter attached to this specific job (empty array when the job has none); `hidden_fields` lists the form's internal hidden inputs. Every field carries `name`, `label`, `input_type` (the site's widget type such as text, asyncselect, choice, valuecheckbox, markdown, textarea, array-of-object), `data_type`, `required`, `visible` (conditional fields such as US EEO disclosures or country-specific address lines are included for completeness with `visible:false` when this job's country/template does not trigger them), `max_length`, `min_length`, `pattern`, `default`, and `options` (array of `{value,label}` for dropdowns/choices, fetched live for visible dropdowns; null for free text). A dropdown whose options depend on another answer (region depends on country) has `options_depend_on` set and `options` null. Repeatable groups (employment, education, certifications, languages) expose their sub-fields in `item_fields` with `max_items`/`min_items`. Labels are resolved to the site's English text; a few fields have no translation on the site and echo their internal name (e.g. firstName). Costs about ten upstream requests per call. A job ID that no longer exists returns a not-found input error.
| Param | Type | Description |
|---|---|---|
| job_idrequired | string | Numeric OpenText job ID as shown on the job listing page and in its URL (careers.opentext.com/us/en/job/<job_id>/...). |
{
"type": "object",
"fields": {
"job": "object describing the posting the form belongs to: job_id, job_title, location, job_country (ISO-3), category, requisition_template, quick_apply (boolean), locale",
"sections": "array of application steps in order; each has step_id, title, visible (boolean), field_count and fields (array of field objects)",
"hidden_fields": "array of {name, default} for the form's internal hidden inputs",
"resume_upload": "object: required (boolean), accepted_file_types (string), max_file_size_mb (number)",
"sections[].fields": "array of field objects: name, label, input_type, data_type, required, visible, hidden_input, max_length, min_length, pattern, default, options (array of {value,label} or null), options_depend_on, plus item_fields/max_items/min_items/date_format for repeatable or composite fields",
"job_specific_questions": "array of field objects for questions attached to this job only; empty when none"
},
"sample": {
"data": {
"job": {
"job_id": "52075",
"locale": "en_US",
"category": "Sales",
"location": "Virtual, FIN",
"job_title": "Commercial Solution Sales Executive - Content",
"job_country": "FIN",
"quick_apply": true,
"requisition_template": "OpenText Global Req"
},
"sections": [
{
"title": "Profile Information",
"fields": [
{
"name": "firstName",
"label": "firstName",
"default": null,
"options": null,
"pattern": "^(?!.*\\.\\.)[.A-Za-zÑñ ]+(?:[ .'\\-/][A-Za-zÑñ ]+)*$",
"visible": true,
"required": true,
"data_type": "string",
"input_type": "text",
"max_length": 100,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
},
{
"name": "country",
"label": "Country",
"default": null,
"options": [
{
"label": "United States",
"value": "122290"
},
{
"label": "Finland",
"value": "122213"
}
],
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "asyncselect",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
},
{
"name": "region",
"label": "State",
"default": null,
"options": null,
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "asyncselect",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": "country"
},
{
"name": "currentTitle",
"label": "Most Recent Job Title",
"default": null,
"options": null,
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "text",
"max_length": 500,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
}
],
"step_id": "personalInformation",
"visible": true,
"field_count": 23
},
{
"title": "My Experiemce",
"fields": [
{
"name": "experienceData",
"label": "Employment",
"default": null,
"options": null,
"pattern": null,
"visible": true,
"required": false,
"data_type": "array",
"max_items": 10,
"min_items": null,
"input_type": "array-of-object",
"max_length": null,
"min_length": null,
"item_fields": [
{
"name": "companyName",
"label": "Employer Name",
"default": null,
"options": null,
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "string",
"max_length": 500,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
}
],
"hidden_input": false,
"options_depend_on": null
}
],
"step_id": "workAndEducation",
"visible": false,
"field_count": 5
},
{
"title": "Application Questions",
"fields": [
{
"name": "applicantSource",
"label": "How did you hear about us?",
"default": null,
"options": [
{
"label": "Agency",
"value": "171802"
},
{
"label": "LinkedIn",
"value": "135676"
}
],
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "choice",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
},
{
"name": "eligibleToWork",
"label": "Are You Eligible",
"default": null,
"options": [
{
"label": "No",
"value": "123109"
},
{
"label": "Yes",
"value": "123110"
}
],
"pattern": null,
"visible": true,
"required": true,
"data_type": "string",
"input_type": "text",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
},
{
"name": "race",
"label": "Race",
"default": null,
"options": null,
"pattern": null,
"visible": false,
"required": true,
"data_type": "string",
"input_type": "text",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
}
],
"step_id": "applicationQuestions",
"visible": true,
"field_count": 18
},
{
"title": "Review",
"fields": [
{
"name": "untitled5979",
"label": "untitled5979",
"default": null,
"options": null,
"pattern": null,
"visible": true,
"required": false,
"data_type": "object",
"input_type": "summary",
"max_length": null,
"min_length": null,
"hidden_input": false,
"options_depend_on": null
}
],
"step_id": "applicationReview",
"visible": true,
"field_count": 1
}
],
"hidden_fields": [
{
"name": "loginType",
"default": null
},
{
"name": "jobId",
"default": null
},
{
"name": "flowNumber",
"default": "1"
}
],
"resume_upload": {
"required": true,
"max_file_size_mb": 3,
"accepted_file_types": "doc, docx, pdf, html, txt"
},
"job_specific_questions": []
},
"status": "success"
}
}About the OpenText API
What the API returns
The get_application_form endpoint accepts a single required parameter, job_id — the numeric identifier visible in the OpenText Careers URL (for example, 52075). It returns one top-level object that combines a job summary with the full form structure bound to that posting.
The job object in the response covers identifying metadata: job_id, job_title, location, job_country (ISO-3 code), category, and requisition_template. This is the posting the form is attached to, not a search result or listing summary.
Form structure and field definitions
The sections array lists each application step in order. Every section carries step_id, title, visible (boolean), field_count, and a fields array. Each field object within a section exposes name, label, input_type, data_type, required, visible, hidden_input, max_length, min_length, pattern, and default — everything needed to reproduce or validate the form client-side.
Supporting objects
The hidden_fields array lists internal form inputs as {name, default} pairs. The resume_upload object specifies whether upload is required, the accepted_file_types string, and max_file_size_mb. The job_specific_questions array contains additional field objects unique to the individual posting; it is an empty array when none are present. Together these objects give a complete picture of what a candidate would encounter when applying to a specific OpenText role.
The OpenText API is a managed, monitored endpoint for careers.opentext.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when careers.opentext.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 careers.opentext.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?+
- Mirror OpenText job application forms in an internal recruiting tool, pre-populating fields using
nameanddefaultvalues. - Validate candidate-submitted application data against
pattern,min_length, andmax_lengthrules before submission. - Track which roles carry
job_specific_questionsto flag postings with non-standard screening steps. - Build accessibility audits of the OpenText application flow by iterating over
input_typeandvisibleattributes across sections. - Monitor changes to required fields or resume upload constraints (
max_file_size_mb,accepted_file_types) across postings over time. - Aggregate
locationandjob_countrydata across multiple job IDs to map where OpenText is actively hiring. - Automate QA testing of ATS integrations by using real form definitions from live postings as test fixtures.
| 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.
Does OpenText provide an official public developer API for its careers site?+
What does `get_application_form` return for a job with no custom questions?+
job_specific_questions array is returned as an empty array. All other response objects — job, sections, hidden_fields, and resume_upload — are still populated regardless of whether job-specific questions are present.Does the API return a list of all open OpenText job postings?+
job_id; it does not expose a search or listing endpoint to enumerate available roles. You can fork it on Parse and revise to add a job search or listing endpoint.Are candidate submission results or application status data included in the response?+
How current is the form definition returned for a given job ID?+
get_application_form with the same job_id will return the updated definition. There is no built-in change history or diffing in the current response shape.