DEVELOPERS

Job Search API

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.

No API key No signup OpenAPI 3.1 GET & POST

Quick start

curl "https://jobgether.com/api/v1/jobs?keyword=frontend&locations=spain&limit=3"

Base endpoint: /api/v1/jobs — 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.

Parameters

Every parameter is optional. Call the endpoint with no parameters at all and you get the most recent listings.

NameTypeDescriptionExample
keywordstringFree-text search across job title, job function, skills, company name, contract type, and language.react developer
jobReferencesstring[] (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
locationsstring[] (comma-separated or repeated)Location slugs — country, continent, or city (e.g. "spain", "europe", "worldwide"). Unknown values return a 400 error.spain,france
industriesstring[] (comma-separated or repeated)Industry slugs or ids.fintech
contractTypestring[] (comma-separated or repeated)Employment type.
full-timepart-timefixed-termfreelanceinternships
full-time
experiencestring[] (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
remoteTypestringDegree 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
includeHybridboolean ("true"/"false")When "true", also include hybrid roles alongside remote ones.true
salaryMinnumberMinimum annual salary filter, in the given `currency`.60000
salaryMaxnumberMaximum annual salary filter, in the given `currency`.90000
currencystringISO currency code for the salary filters.EUR
sortstringResult ordering. Defaults to "relevance".
relevancedate
date
pageintegerPage number, starting at 1. Capped at 10.1
limitintegerResults per page. Defaults to 10, capped at 25.10

Examples

Remote frontend jobs in Spain paying over 50k EUR
curl "https://jobgether.com/api/v1/jobs?keyword=frontend&locations=spain&salaryMin=50000&currency=EUR"
Senior full-time roles, most recent first
curl "https://jobgether.com/api/v1/jobs?experience=senior-5-10-years&contractType=full-time&sort=date"
Include hybrid roles in Europe
curl "https://jobgether.com/api/v1/jobs?locations=europe&includeHybrid=true&limit=5"
Same as the first example, sent as a POST
curl -X POST "https://jobgether.com/api/v1/jobs" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"frontend","locations":["spain"],"salaryMin":50000,"currency":"EUR"}'

Response

{
  "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"
}

Errors

Errors are RFC 9457 problem documents served as `application/problem+json`. Branch on `code` — it is the stable machine-readable discriminator; `title` and `detail` are human-facing and may be reworded. On invalid input the offending `field` and its complete `allowedValues` are included so a caller can correct the call and retry without a lookup. The `error`, `field`, `allowedValues` and `docs` members predate the RFC 9457 adoption and are retained, so integrations written against the older shape keep working.

invalid_parameter
400 — a parameter is missing, malformed, or outside its allowed values.
invalid_body
400 — the POST body was not valid JSON.
not_found
404 — no endpoint at that path. The response lists the endpoints that do exist.
timeout
504 — the search exceeded its server-side budget. Retry with a narrower query.
internal_error
500 — unexpected server error.
{
  "type": "/astroapi/ai/jobs/docs#invalid_parameter",
  "title": "Invalid parameter",
  "status": 400,
  "detail": "Invalid value for 'experience': \"senior\"",
  "code": "invalid_parameter",
  "field": "experience",
  "allowedValues": [
    "entry-level-graduate",
    "junior-1-2-years",
    "mid-level-2-5-years",
    "senior-5-10-years",
    "expert-10-years"
  ],
  "error": "Invalid value for 'experience': \"senior\"",
  "docs": "/astroapi/ai/jobs/docs"
}

Versioning

The REST API is versioned in the URL path; `/api/v1/jobs` is the current stable surface. Within a version only backward-compatible changes ship (new optional parameters, new response fields, new enum values). A change that would break an existing caller ships as `/api/v2/...` instead, leaving `/v1/` answering as before.

A superseded path keeps serving and announces its retirement rather than failing: a `Deprecation` header (RFC 9745) with the date it was deprecated, a `Sunset` header (RFC 8594) with the date it stops responding — at least 30 days later — and `Link: <successor>; rel="successor-version"`. JSON responses from a deprecated path also carry a `deprecation` object, so a caller reading only the body still sees it.

Currently deprecated

  • /astroapi/ai/jobs — use /api/v1/jobs instead. Stops responding on 2026-09-28.

Notes

Fair use

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.