{"openapi":"3.1.0","info":{"title":"Startup Jobs API","version":"1.0.0","description":"A free, read-only API for browsing jobs listed on [startup.jobs](https://startup.jobs).\n\n## Authentication\n\nAll endpoints (except this spec) require an API key. Create one for free at\n[startup.jobs/account/api_keys](https://startup.jobs/account/api_keys) and pass it\nas a bearer token:\n\n```\ncurl https://api.startup.jobs/v1/jobs -H \"Authorization: Bearer sj_...\"\n```\n\nFor quick experiments you can also pass it as an `api_key` query parameter.\n\n## Attribution\n\nWhen you display jobs from this API, link the job title to the `url` field\n(a regular dofollow link, no `rel=\"nofollow\"`) and credit Startup Jobs as the\nsource. Full terms: https://startup.jobs/terms/api\n\n## Freshness and coverage\n\n- The jobs list covers the last 14 days of listings.\n- New listings appear in the API 24 hours after they go live on startup.jobs,\n  except jobs posted directly by employers, which appear immediately.\n- A company's own jobs (`/v1/companies/{slug}/jobs`) are not limited to the\n  14-day window, so you can embed a company's full set of live listings.\n\n## Full access\n\nAccounts with full API access are not limited to the 14-day window, can\nfilter with `posted_before`, receive structured `salary_data` on each job,\nand get a higher rate limit. Email marc@startup.jobs to get full access.\n\n## Rate limits\n\n20 requests per minute per API key (300 with full access). Exceeding the\nlimit returns `429`. Contact support@startup.jobs if you need more.\n\n## MCP server\n\nPrefer a conversational interface? Connect Claude, ChatGPT, or Cursor to\nour MCP server at `https://api.startup.jobs/mcp`: the same data as this\nAPI, plus job trends and salary benchmarks, without writing code.\nDetails: https://startup.jobs/mcp\n\n## Pagination\n\nList responses return at most 50 items per page. Use `next_cursor` from the\nresponse as the `starting_after` parameter of the next request until\n`has_more` is `false`.\n","contact":{"email":"support@startup.jobs","url":"https://startup.jobs/api"},"termsOfService":"https://startup.jobs/terms/api"},"servers":[{"url":"https://api.startup.jobs"}],"security":[{"bearerAuth":[]}],"paths":{"/v1/jobs":{"get":{"operationId":"listJobs","summary":"List recent jobs","description":"Lists live jobs from the last 14 days, newest first. New scraped listings appear 24 hours after publication; employer-posted jobs appear immediately.\n","parameters":[{"name":"q","in":"query","description":"Search job titles and company names.","schema":{"type":"string","maxLength":200}},{"name":"role","in":"query","description":"Filter by role slug (see `/v1/roles`).","schema":{"type":"string"}},{"name":"country","in":"query","description":"Filter by ISO 3166-1 alpha-2 country code (see `/v1/locations`).","schema":{"type":"string","example":"US"}},{"name":"workplace_type","in":"query","schema":{"type":"string","enum":["remote","hybrid","on-site"]}},{"name":"employment_type","in":"query","schema":{"type":"string","enum":["full-time","part-time","internship","contractor"]}},{"name":"company","in":"query","description":"Filter by company slug.","schema":{"type":"string"}},{"name":"posted_after","in":"query","description":"Only jobs published after this ISO 8601 date or timestamp.","schema":{"type":"string","example":"2026-07-01"}},{"name":"posted_before","in":"query","description":"Only jobs published before this ISO 8601 date or timestamp. Requires full access.","schema":{"type":"string","example":"2026-06-01"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/StartingAfter"}],"responses":{"200":{"description":"A page of jobs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobsPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/jobs/{id}":{"get":{"operationId":"getJob","summary":"Get a job","parameters":[{"name":"id","in":"path","required":true,"description":"The job id (or the full slugged id from the job URL).","schema":{"type":"string","example":"1234567"}}],"responses":{"200":{"description":"The job.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Job"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/companies/{slug}":{"get":{"operationId":"getCompany","summary":"Get a company","parameters":[{"$ref":"#/components/parameters/CompanySlug"}],"responses":{"200":{"description":"The company.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/companies/{slug}/jobs":{"get":{"operationId":"listCompanyJobs","summary":"List a company's live jobs","description":"All live jobs for one company, newest first. Not limited to the 14-day window, so you can embed a company's complete set of live listings.\n","parameters":[{"$ref":"#/components/parameters/CompanySlug"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/StartingAfter"}],"responses":{"200":{"description":"A page of jobs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobsPage"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/roles":{"get":{"operationId":"listRoles","summary":"List roles","description":"All role categories, usable as the `role` filter on `/v1/jobs`.","responses":{"200":{"description":"All roles.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/v1/locations":{"get":{"operationId":"listLocations","summary":"List countries","description":"All countries with jobs, usable as the `country` filter on `/v1/jobs`.","responses":{"200":{"description":"All countries.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/v1/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"This OpenAPI specification","security":[],"responses":{"200":{"description":"The OpenAPI 3.1 specification as JSON."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key created at https://startup.jobs/account/api_keys (starts with `sj_`)."}},"parameters":{"Limit":{"name":"limit","in":"query","description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},"StartingAfter":{"name":"starting_after","in":"query","description":"Cursor for pagination; pass the `next_cursor` of the previous page.","schema":{"type":"integer"}},"CompanySlug":{"name":"slug","in":"path","required":true,"description":"The company slug, as found in the `company.slug` field of a job.","schema":{"type":"string","example":"stripe"}}},"responses":{"BadRequest":{"description":"A parameter is invalid. The error message explains which one.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded. Wait a minute before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}},"JobsPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"total_count":{"type":"integer","description":"Total number of jobs matching the query."},"has_more":{"type":"boolean"},"next_cursor":{"type":["integer","null"],"description":"Pass as `starting_after` to fetch the next page."},"notices":{"type":"array","items":{"type":"string"},"description":"Only present when the query hit a free-tier limit (e.g. `posted_after` beyond the 14-day window)."}}},"Job":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string","format":"uri","description":"The job page on startup.jobs. Always link to this URL when displaying the job; applications go through this page.\n"},"published_at":{"type":"string","format":"date-time"},"employment_type":{"type":"string","enum":["full-time","part-time","internship","contractor"]},"workplace_type":{"type":"string","enum":["remote","hybrid","on-site"]},"location":{"type":"object","properties":{"city":{"type":["string","null"]},"state":{"type":["string","null"]},"country":{"type":["string","null"]},"country_code":{"type":["string","null"],"description":"ISO 3166-1 alpha-2."}}},"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"salary":{"type":["string","null"],"description":"Human-readable salary range as displayed on startup.jobs, e.g. \"USD 100,000 – 150,000 per year\"."},"salary_data":{"type":["object","null"],"description":"Structured salary range. Only present for accounts with full access.","properties":{"min":{"type":["integer","null"]},"max":{"type":["integer","null"]},"currency":{"type":["string","null"],"description":"ISO 4217 currency code."},"interval":{"type":["string","null"],"enum":["hour","day","week","biweekly","month","year",null]},"min_usd":{"type":["integer","null"],"description":"Converted to USD at a recent exchange rate."},"max_usd":{"type":["integer","null"]}}},"company":{"$ref":"#/components/schemas/Company"},"description_html":{"type":"string","description":"Sanitized HTML. Ends with an attribution paragraph linking back to startup.jobs, which must be preserved when displayed."}}},"Company":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","format":"uri","description":"The company profile on startup.jobs."},"website_url":{"type":["string","null"],"format":"uri"},"logo_url":{"type":["string","null"],"format":"uri"},"active_jobs_count":{"type":"integer"}}},"Role":{"type":"object","properties":{"title":{"type":"string"},"slug":{"type":"string"},"parent_slug":{"type":["string","null"]},"url":{"type":"string","format":"uri"}}},"Location":{"type":"object","properties":{"name":{"type":"string"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2."},"url":{"type":"string","format":"uri"}}}}}}