{"openapi":"3.1.0","info":{"title":"OfferMagnet Jobs API","version":"1.0.0","description":"Free, keyless, read-only access to live job postings (US, France, Europe, remote) with a visa-sponsorship reading per posting. 60 requests/minute per IP; responses are cached up to 10 minutes. Also available as an MCP server at https://offermagnet.io/mcp.","contact":{"email":"offerline@limed.tech","url":"https://offermagnet.io/developers"}},"servers":[{"url":"https://offermagnet.io"}],"paths":{"/api/v1/jobs":{"get":{"operationId":"searchJobs","summary":"Search live job postings","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Keywords: title, skill or company."}},{"name":"country","in":"query","required":false,"schema":{"type":"string","description":"ISO 3166 alpha-2, e.g. US, FR, GB."}},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Contract type.","enum":["fulltime","parttime","internship","alternance","freelance","vie"]}},{"name":"remote","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"visa","in":"query","required":false,"schema":{"type":"string","description":"yes = offers sponsorship, no = refuses or requires citizenship.","enum":["yes","no"]}},{"name":"company","in":"query","required":false,"schema":{"type":"string","description":"Exact employer name."}},{"name":"posted_days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":45}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":500,"default":0}}],"responses":{"200":{"description":"Matching jobs","content":{"application/json":{"schema":{"type":"object","properties":{"total_estimate":{"type":"integer"},"offset":{"type":"integer"},"limit":{"type":"integer"},"count":{"type":"integer"},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"more":{"type":"string"}}}}}}}}},"/api/v1/jobs/{id}":{"get":{"operationId":"getJob","summary":"One job posting with its full text","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Job"},{"type":"object","properties":{"description":{"type":"string"}}}]}}}},"404":{"description":"Not found or closed"}}}},"/api/v1/visa-check":{"post":{"operationId":"checkVisaSponsorship","summary":"Does this posting sponsor visas? Quotes the sentence that says so.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"Job posting text."}}}}}},"responses":{"200":{"description":"Verdict","content":{"application/json":{"schema":{"type":"object","properties":{"visa_sponsorship":{"type":"string","description":"","enum":["yes","no","unknown"]},"evidence":{"type":["string","null"]},"meaning":{"type":"string"}}}}}}}}},"/api/v1/stats":{"get":{"operationId":"jobStats","summary":"Live posting counts by country, contract type, remote and visa wording","responses":{"200":{"description":"Counts","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Job":{"type":"object","properties":{"id":{"type":"string","description":"Job id; pass to /api/v1/jobs/{id} URL-encoded."},"title":{"type":"string"},"company":{"type":["string","null"]},"location":{"type":["string","null"]},"country":{"type":["string","null"]},"remote":{"type":"boolean"},"type":{"type":["string","null"]},"posted_at":{"type":["string","null"]},"salary":{"type":["object","null"],"properties":{"min":{"type":["number","null"]},"max":{"type":["number","null"]},"currency":{"type":["string","null"]}}},"visa_sponsorship":{"type":"string","description":"yes | no | unknown, read from the posting text.","enum":["yes","no","unknown"]},"visa_evidence":{"type":["string","null"],"description":"The sentence that decided visa_sponsorship."},"apply_url":{"type":"string","description":"The employer's own posting."},"offermagnet_url":{"type":"string","description":"OfferMagnet tailors a resume to this job and applies."}}}}}}