{"openapi":"3.1.0","info":{"title":"SalesJobs.Now sales job data","version":"1.0.0","summary":"Open sales roles counted by kind of sales work and by company, with the pay each posting states.","description":"Read-only figures and search over open sales jobs (SDR and BDR, account executive, account manager, customer success, sales engineering, sales leadership and more), taken from the careers systems of the companies hiring. Free, no key, CORS on. Every field is explained at https://salesjobs.now/data. Licensed CC BY 4.0: name SalesJobs.Now as the source and quote the day in temporal_coverage. Assistants can query the same figures over MCP at https://salesjobs.now/api/mcp.","contact":{"name":"SalesJobs.Now","url":"https://salesjobs.now/data"},"license":{"name":"CC BY 4.0","identifier":"CC-BY-4.0"}},"externalDocs":{"description":"What each field means, and the terms of use","url":"https://salesjobs.now/data"},"servers":[{"url":"https://salesjobs.now"}],"paths":{"/roles.json":{"get":{"operationId":"getOpenRoles","summary":"Sales openings by kind of sales work and by company","description":"A count of the sales roles open today, the ones that first appeared over the past 7 days and in each recent ISO week, split by kind of sales work and by hiring company, with a pay band wherever three or more companies post one. Totals only: no single posting is included.","responses":{"200":{"description":"The openings document, dated by temporal_coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolesDocument"}}}}}}},"/pay.json":{"get":{"operationId":"getPayByWorkType","summary":"Posted pay by kind of sales work","description":"For every kind of sales work with posted pay from at least three companies: the median and the middle half (25th to 75th percentile) of the pay ranges employers state, in US dollars a year.","responses":{"200":{"description":"The pay document, dated by temporal_coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayDocument"}}}}}}},"/pay.csv":{"get":{"operationId":"getPayByWorkTypeCsv","summary":"Posted pay by kind of sales work, in CSV","description":"The rows of /pay.json as a CSV file stamped with its day.","responses":{"200":{"description":"A CSV file.","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/api/v1/jobs":{"get":{"operationId":"searchJobs","summary":"Search open sales jobs","description":"Open sales roles from the companies SalesJobs.Now follows, each with its posted pay and a link to its page on SalesJobs.Now, where the user applies. All filters are optional. Always show the user each role's url.","parameters":[{"name":"q","in":"query","required":false,"description":"Words matched against role titles, for example account executive, SDR, enterprise or healthcare.","schema":{"type":"string","maxLength":120}},{"name":"kind","in":"query","required":false,"description":"One kind of sales work by its slug, or several joined by commas.","schema":{"type":"string","enum":["rlhf-eval","coding","stem-math","domain-expert","agentic-eval","data-labeling","robotics-data","multilingual","audio-speech","writing","red-teaming","research-studies"]}},{"name":"platform","in":"query","required":false,"description":"One hiring company by its slug (roles.json lists them).","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter ISO 3166-1 code that keeps only roles open to people in that country, for example US, GB or CA.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"min_pay_usd","in":"query","required":false,"description":"Keeps only roles whose posted pay reaches at least this many US dollars a year at the top of its range (a posting quoted per hour counts at 2,080 hours).","schema":{"type":"integer","minimum":1,"maximum":4160000}},{"name":"min_hourly_usd","in":"query","required":false,"description":"The same floor given per hour, multiplied by 2,080 hours to make a year.","schema":{"type":"integer","minimum":1,"maximum":2000}},{"name":"since","in":"query","required":false,"description":"Keeps only roles that first appeared on or after this date (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"sort","in":"query","required":false,"description":"balanced (default: the site's single role order, which weighs how many people apply to a role against how often it is seen, and never sells placement), recent (newest first) or pay (best paid first).","schema":{"type":"string","enum":["balanced","recent","pay"],"default":"balanced"}},{"name":"limit","in":"query","required":false,"description":"Number of roles to return, from 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"offset","in":"query","required":false,"description":"Roles to skip, to page through the results.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"src","in":"query","required":false,"description":"A short slug naming your app; it rides along on every role link.","schema":{"type":"string","maxLength":40}}],"responses":{"200":{"description":"The roles that match, in the site's role order unless you sort them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobsResult"}}}},"400":{"description":"A filter names a kind, a company or a country the board does not know; the error field says which.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"DocumentInfo":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"source":{"type":"string","format":"uri","description":"The page on the site that shows these same figures."},"license":{"type":"string","format":"uri"},"measurement_technique":{"type":"string"},"updated":{"type":"string","format":"date-time","description":"The last time the companies' careers systems were read, in UTC."},"temporal_coverage":{"type":"string","format":"date","description":"The date these figures belong to; quote it when you cite them."}}},"PayBand":{"type":"object","properties":{"currency":{"type":["string","null"],"examples":["USD"]},"unit":{"type":["string","null"],"examples":["per year"]},"median":{"type":["number","null"]},"typical_low":{"type":["number","null"],"description":"25th percentile of the posted pay figures."},"typical_high":{"type":["number","null"],"description":"75th percentile of the posted pay figures."},"rate_samples":{"type":["integer","null"],"description":"How many distinct posted pay figures went in, with reposted roles counted once."},"platforms":{"type":["integer","null"],"description":"How many companies posted those figures."}}},"PayDocument":{"allOf":[{"$ref":"#/components/schemas/DocumentInfo"},{"type":"object","properties":{"pay_by_work_type":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/PayBand"},{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"open_total":{"type":"integer","description":"Roles of this kind open now."},"unpriced":{"type":"integer","description":"Roles of this kind open now whose posting gives no pay."}}}]}}}}]},"RolesDocument":{"allOf":[{"$ref":"#/components/schemas/DocumentInfo"},{"type":"object","properties":{"totals":{"type":"object","properties":{"open_roles":{"type":"integer"},"platforms_live":{"type":"integer"},"new_last_7d":{"type":"integer"},"new_last_7d_measurement":{"type":"string"}}},"recent_market_momentum":{"type":["object","null"],"properties":{"unit":{"type":"string"},"measurement":{"type":"string"},"avg_new_roles_per_week":{"type":"number"},"weeks_measured":{"type":"integer"},"weekly":{"type":"array","items":{"type":"object","properties":{"week_start":{"type":"string","format":"date"},"new_roles":{"type":"integer"}}}}}},"open_by_work_type":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/PayBand"},{"type":"object","properties":{"slug":{"type":"string"},"label":{"type":"string"},"open_count":{"type":"integer"}}}]}},"open_by_platform":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"open_count":{"type":"integer"}}}}}}]},"PublicRole":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"platform":{"type":"string","description":"The hiring company"},"platform_slug":{"type":"string"},"kind":{"type":["string","null"],"description":"Kind of sales work"},"kind_slug":{"type":["string","null"]},"pay":{"type":["string","null"],"description":"The pay the posting states; when it states none, the company's usual range, labelled as such in the text"},"location":{"type":["string","null"]},"remote":{"type":"boolean"},"listed":{"type":"string","format":"date"},"first_seen_at":{"type":"string","format":"date-time"},"url":{"type":"string","format":"uri","description":"The role's page on SalesJobs.Now, the place to apply"}},"required":["id","title","platform","platform_slug","remote","listed","first_seen_at","url"]},"JobsResult":{"type":"object","properties":{"total":{"type":["integer","null"],"description":"Number of open roles that match"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/PublicRole"}},"more":{"type":"string","format":"uri"}},"required":["roles"]},"Error":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}