DEVELOPERS
Search Jobgether job opportunities. Intended for AI agents/assistants answering user job-search queries. Each job's `url` is its Jobgether listing page, not an external apply link. Results are capped at 25 per page.
curl "https://jobgether.com/astroapi/ai/jobs.json?keyword=frontend&locations=spain&limit=3"Base endpoint: /astroapi/ai/jobs.json — GET takes parameters as query string params. POST takes the same parameters as a JSON object body (Content-Type: application/json) — array-valued params (jobReferences, locations, industries, contractType, experience) may be given as a JSON array or a comma-separated string. Both methods accept the same parameters and return the same response shape.
OpenAPI 3.1 document with typed parameters and operation IDs, ready to register as a callable tool.
This same reference as JSON, for agents that would rather read the parameters than the page.
What Jobgether is for, when to call this API, and when not to — written for language models.
Every parameter is optional. Call the endpoint with no parameters at all and you get the most recent listings.
| Name | Type | Description | Example |
|---|---|---|---|
| keyword | string | Free-text search across job title, job function, skills, company name, contract type, and language. | react developer |
| jobReferences | string[] (comma-separated or repeated) | Job function slugs (e.g. "frontend-developer"). Unknown values return a 400 error — there is no fixed enum, this is a large taxonomy; when unsure, omit and rely on `keyword` instead. | frontend-developer,backend-developer |
| locations | string[] (comma-separated or repeated) | Location slugs — country, continent, or city (e.g. "spain", "europe", "worldwide"). Unknown values return a 400 error. | spain,france |
| industries | string[] (comma-separated or repeated) | Industry slugs or ids. | fintech |
| contractType | string[] (comma-separated or repeated) | Employment type.full-timepart-timefixed-termfreelanceinternships | full-time |
| experience | string[] (comma-separated or repeated) | Seniority level required.entry-level-graduatejunior-1-2-yearsmid-level-2-5-yearssenior-5-10-yearsexpert-10-years | senior-5-10-years |
| remoteType | string | Degree of remote work. All jobs on this platform are remote-friendly by default (Full Remote); use this to widen or narrow that.full-remoteremote-firsthybrid | full-remote |
| includeHybrid | boolean ("true"/"false") | When "true", also include hybrid roles alongside remote ones. | true |
| salaryMin | number | Minimum annual salary filter, in the given `currency`. | 60000 |
| salaryMax | number | Maximum annual salary filter, in the given `currency`. | 90000 |
| currency | string | ISO currency code for the salary filters. | EUR |
| sort | string | Result ordering. Defaults to "relevance".relevancedate | date |
| page | integer | Page number, starting at 1. Capped at 10. | 1 |
| limit | integer | Results per page. Defaults to 10, capped at 25. | 10 |
curl "https://jobgether.com/astroapi/ai/jobs.json?keyword=frontend&locations=spain&salaryMin=50000¤cy=EUR"curl "https://jobgether.com/astroapi/ai/jobs.json?experience=senior-5-10-years&contractType=full-time&sort=date"curl "https://jobgether.com/astroapi/ai/jobs.json?locations=europe&includeHybrid=true&limit=5"curl -X POST "https://jobgether.com/astroapi/ai/jobs.json" \
-H "Content-Type: application/json" \
-d '{"keyword":"frontend","locations":["spain"],"salaryMin":50000,"currency":"EUR"}'{
"jobs": [
{
"id": "65f1a2b3c4d5e6f7a8b9c0d1",
"title": "Senior Frontend Developer",
"company": "Acme Inc.",
"url": "https://www.jobgether.com/offer/senior-frontend-developer-acme-inc",
"location": "Spain, France",
"remote": "Full Remote",
"contractType": "Full time",
"experience": "Senior (5-10 years)",
"salaryRange": "60000-80000 EUR",
"jobFunctions": [
"Frontend Developer"
],
"postedAt": "2026-07-01T00:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"hasMore": true
},
"browseOnSiteUrl": "https://www.jobgether.com/search-offers?keyword=frontend",
"docs": "/astroapi/ai/jobs/docs"
}On invalid input, the endpoint returns HTTP 400 with the offending field and its allowed values so a caller can self-correct.
{
"error": "Invalid value for 'experience': \"senior\"",
"field": "experience",
"allowedValues": [
"entry-level-graduate",
"junior-1-2-years",
"mid-level-2-5-years",
"senior-5-10-years",
"expert-10-years"
],
"docs": "/astroapi/ai/jobs/docs"
}The API is public and unauthenticated. We rate-limit at the edge rather than issuing keys, so keep request volume reasonable and cache what you can. If you are planning something high-volume, write to support@jobgether.com first so we do not mistake you for a scraper.