Teamtailor APIwhyhirewrong.teamtailor.com ↗
Retrieve the full application form structure for WhyHireWrong? Teamtailor job listings — sections, fields, types, and requirements in one API call.
What is the Teamtailor API?
The WhyHireWrong Teamtailor API exposes 1 endpoint, get_application_form, that returns the complete application form structure for any job listing on the WhyHireWrong? Teamtailor career site. A single call yields the job title, location, short description, and all form sections with their fields — including labels, field types, input types, required status, and selectable options for choice fields.
curl -X GET 'https://api.parse.bot/scraper/17397608-ab13-4174-98ee-6f66bb2daf1d/get_application_form?job_url=https%3A%2F%2Fwhyhirewrong.teamtailor.com%2Fjobs%2F8244549-founding-growth-manager' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace whyhirewrong-teamtailor-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Teamtailor application form API — fetch and inspect a job's form structure."""
from parse_apis.whyhirewrong_teamtailor_com_api import Teamtailor, InvalidJobUrl
client = Teamtailor()
# Fetch the application form for a specific job listing.
try:
form = client.application_forms.get(
job_url="https://whyhirewrong.teamtailor.com/jobs/8244549-founding-growth-manager"
)
except InvalidJobUrl:
print("Job listing not found or URL is invalid.")
raise
print(f"{form.job_title} — {form.location}")
print(form.description[:120])
# Walk each section and its fields to understand the form structure.
for section in form.sections:
print(f"\n[{section.name}]")
for field in section.fields:
required_tag = " (required)" if field.required else ""
print(f" {field.label}: {field.field_type}/{field.input_type}{required_tag}")
if field.question_id is not None:
print(f" question_id={field.question_id}")
print("\nexercised: application_forms.get")
Retrieves the application form for a Teamtailor job listing. Returns the form structure organized into sections (e.g. Details, Personal information), each containing its fields with labels, types, required status, and options where applicable. Custom questions include their question_id. One HTTP round-trip to the career site's application page. Returns upstream_error with status 404 when the job listing does not exist.
| Param | Type | Description |
|---|---|---|
| job_urlrequired | string | Full URL of the Teamtailor job listing (e.g. https://whyhirewrong.teamtailor.com/jobs/8244549-founding-growth-manager). The slug after the numeric ID is optional. |
{
"type": "object",
"fields": {
"job_id": "string — numeric job ID",
"location": "string — location and remote status",
"sections": "array of section objects, each with name (string) and fields (array of field objects with label, field_type, input_type, required, and optionally question_id, options, consent_text)",
"job_title": "string — title of the job listing",
"description": "string — short description of the job listing"
},
"sample": {
"data": {
"job_id": "8244549",
"location": "Paris · Fully Remote",
"sections": [
{
"name": "Details",
"fields": [
{
"label": "Please attach your Linkedin profile",
"required": true,
"field_type": "custom_question",
"input_type": "text",
"question_id": "5420078"
}
]
},
{
"name": "Personal information",
"fields": [
{
"label": "First name",
"required": true,
"field_type": "standard_field",
"input_type": "text"
},
{
"label": "Last name",
"required": true,
"field_type": "standard_field",
"input_type": "text"
},
{
"label": "Email",
"required": true,
"field_type": "standard_field",
"input_type": "email"
},
{
"label": "Phone",
"required": true,
"field_type": "standard_field",
"input_type": "tel"
},
{
"label": "Upload CV",
"required": true,
"field_type": "file_upload",
"input_type": "file"
},
{
"label": "Privacy Policy Consent",
"required": true,
"field_type": "consent",
"input_type": "checkbox",
"consent_text": "By submitting this application, I agree that I have read the Privacy Policy and confirm that WhyHireWrong? store my personal details to be able to process my job application."
}
]
}
],
"job_title": "Founding Growth Manager",
"description": "Join a Paris pre-seed app studio as Founding Growth Manager: own $1M+/month mobile acquisition, build the growth engine, and scale creator-led Health & Fitness apps from day one."
},
"status": "success"
}
}About the Teamtailor API
What the API returns
The get_application_form endpoint accepts a single required parameter, job_url, which should be the full URL of a job listing on the WhyHireWrong? Teamtailor site (e.g. https://whyhirewrong.teamtailor.com/jobs/8244549-founding-growth-manager). The response includes the numeric job_id, job_title, location (including remote status), and a description summarizing the role.
Form structure in the response
The core of the response is the sections array. Each section object carries a name (such as "Details" or "Personal information") and a fields array. Every field object exposes a label, a field_type, an input_type, a required boolean, and — for choice-type fields — an options array listing the selectable values. Custom questions defined by the employer are also included and carry their full question text alongside the same field metadata.
Coverage and scope
This API is scoped to the WhyHireWrong? Teamtailor career site specifically. It returns form structure data, not submitted applications or candidate records. The job_url must point to an active listing on the whyhirewrong.teamtailor.com domain; listings from other Teamtailor-hosted career sites are not covered by this endpoint.
The Teamtailor API is a managed, monitored endpoint for whyhirewrong.teamtailor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when whyhirewrong.teamtailor.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 whyhirewrong.teamtailor.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?+
- Pre-fill or validate a custom job application UI by mapping form
fieldsandfield_typevalues from the response. - Audit required vs. optional fields across multiple job listings using the
requiredboolean on each field object. - Generate candidate intake checklists from the
sectionsandfieldsstructure before submitting an application. - Detect custom employer questions in the
sectionsarray to prepare tailored answers in advance. - Sync the application form structure into an ATS or hiring workflow tool using
job_idandjob_titleas identifiers. - Compare form complexity across roles by counting total fields per listing using the
sectionsresponse.
| 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 Teamtailor provide an official developer API?+
What does `get_application_form` return for fields that have predefined choices?+
options array listing each selectable value alongside the standard label, field_type, input_type, and required properties. Free-text fields return the same structure without an options array.Does the API return actual job application submissions or candidate data?+
Can this API retrieve application forms from other Teamtailor-hosted career sites?+
whyhirewrong.teamtailor.com domain. Job URLs from other Teamtailor career sites will not return results. You can fork this API on Parse and revise the endpoint to point at a different Teamtailor subdomain.What happens if a job listing is no longer active?+
job_url has been closed or removed, the endpoint will not return form structure data. Always verify that the listing URL resolves to a live job before calling the endpoint.