POST /api/otta/jobs
Price: 1 credit
Get an Otta job posting by its external id or job URL. Returns the full role detail: title, salary range and OTE, required and desirable requirements, tech stack, what the job involves, application process, experience and days-in-office expectations, location preferences, languages, and the full enriched profile of the hiring company.
Get one Otta (Welcome to the Jungle) job posting. Pass the job external id or URL. Returns one item with title, salary_range, ote_salary_range, technologies, requirements, involves_bullets, application_process_bullets, locations and the hiring company profile.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)job string required — Job external id or job URL, e.g. 'gbMGrfG1' or https://app.welcometothejungle.com/jobs/gbMGrfG1 (examples: "gbMGrfG1", "https://app.welcometothejungle.com/jobs/gbMGrfG1"; minLength: 1)currency string — Currency for salary and funding amounts (default: "GBP"; one of: "CAD", "EUR", "GBP", "USD")@type string (default: "OttaJob")id string nullableexternal_id string nullablesubtitle string nullableis_live boolean nullableis_actively_hiring boolean nullableis_internship boolean nullablehide_salary boolean nullableaccepts_internal_applications boolean nullableremote_only boolean nullablemin_years_experience integer nullablemax_years_experience integer nullablemin_days_in_office integer nullablemax_days_in_office integer nullableoffice_location string nullablelocation_restrictions string nullablelocation_information string nullablelocations array (default: [])formatted_locations array (default: [])function string nullablesub_function string nullabletechnologies array (default: [])language_requirements array (default: [])requirements array (default: [])@type string (default: "OttaJobRequirement")value string nullableis_desirable boolean nullableinvolves_bullets array (default: [])application_process_bullets array (default: [])salary_range object nullable@type string (default: "OttaSalaryRange")min_amount integer nullablemax_amount integer nullablecurrency string nullableote_salary_range object nullable@type string (default: "OttaSalaryRange")min_amount integer nullablemax_amount integer nullablecurrency string nullableother_compensation_information string nullableoriginal_url string nullableinserted_at string nullablevalid_until string nullablelast_seen string nullableworkflow_status string nullableteam object nullable@type string (default: "OttaJobTeam")name string nullablemission string nullablesize integer nullablecompany object nullable@type string (default: "OttaCompany")id string nullableexternal_id string nullablename string nullablealias string nullabledomain_name string nullablecompanies_house_name string nullabledealroom_id string nullableimage string nullablefavicon string nullableprimary_colour string nullableprofile_type string nullablewebsite_url string nullablelinkedin_url string nullablecrunchbase_url string nullableangellist_url string nullableshort_description string nullablemission string nullablelive_job_count integer nullableemployee_count integer nullableemployee_survey_count integer nullablehq_address string nullableparsed_hq_address string nullableonly_on_otta boolean nullableis_bcorp boolean nullableis_otta_certified boolean nullableglassdoor_rating number nullableglassdoor_url string nullabletrustpilot_rating number nullabletrustpilot_url string nullableresponse_rate number nullablepercentage_female integer nullableyear_employee_growth_percentage integer nullablemin_days_in_office integer nullablemax_days_in_office integer nullableintegrated_with_dealroom boolean nullablediversity_author_name string nullablediversity_author_title string nullablejob_locations array (default: [])size string nullablesectors array (default: [])@type string (default: "OttaSector")id string nullablevalue string nullablevalues array (default: [])market_bullets array (default: [])other_benefits array (default: [])@type string (default: "OttaBenefit")value string nullablelocation string nullablevisa_sponsorship_countries array (default: [])articles array (default: [])@type string (default: "OttaArticle")url string nullablephotos array (default: [])offices array (default: [])@type string (default: "OttaOffice")address string nullableparsed_address string nullableis_headquarter boolean nullablemap_image string nullableteams array (default: [])@type string (default: "OttaTeam")name string nullablemission string nullablesize integer nullablemembers array (default: [])total_funding object nullable@type string (default: "OttaMoney")amount integer nullablecurrency string nullablefunding_rounds array (default: [])@type string (default: "OttaFundingRound")round string nullablemonth integer nullableyear integer nullableamount integer nullablecurrency string nullableinvestors array (default: [])@type string (default: "OttaInvestor")name string nullableis_top boolean nullablefounders array (default: [])@type string (default: "OttaFounder")name string nullablebio string nullablegender string nullablelinkedin_url string nullablepeople_progressing array (default: [])@type string (default: "OttaPersonProgressing")name string nullablebio string nullablelinkedin_url string nullablediversity_statistics object nullable@type string (default: "OttaDiversityStatistics")updated_at string nullablegenders array (default: [])@type string (default: "OttaDiversityStatistic")value string nullabletotal integer nullablepercent number nullableethnicities array (default: [])@type string (default: "OttaDiversityStatistic")value string nullabletotal integer nullablepercent number nullableworking_locations array (default: [])@type string (default: "OttaDiversityStatistic")value string nullabletotal integer nullablepercent number nullablelive_jobs array (default: [])@type string (default: "OttaCompanyJob")id string nullableexternal_id string nullablesubtitle string nullablefunction string nullablelocations array (default: [])422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Job not found Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.