Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/veritahire-com:veritahire-com-postings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: VeritaHire Postings API
version: 1.0.0
description: 'Live US job postings verified on each employer''s own careers site and retired within about 36 hours of leaving it. FREE, NO KEY: search live jobs, read a whole posting, check whether a posting is still open, the Competitive Hiring Report for a healthcare, finance, IT, engineering, science, HR, legal, marketing, sales, customer service, admin, operations and logistics, skilled trades, retail and food, or education role (competitors'' close times and pay). WITH A KEY (self-serve 2,000-record trial at https://veritahire.com/developers/): the full Verified Jobs Feed - every live posting, cursor-paged, plus per-employer hiring velocity and employer profiles. An MCP server with the free tools is at https://veritahire.com/mcp. Data source: public postings on employers'' own career sites.'
servers:
- url: https://veritahire.com
tags:
- name: Postings
paths:
/api/v1/jobs.php:
get:
tags:
- Postings
summary: Search jobs by keyword and location, list live postings, or fetch one by id
operationId: listJobs
parameters:
- name: after
in: query
description: Cursor. Pass the previous response's next_after; start at 0.
schema:
type: integer
default: 0
minimum: 0
- name: limit
in: query
description: Rows per page, 1-500.
schema:
type: integer
default: 100
minimum: 1
maximum: 500
- name: state
in: query
description: Two-letter US state, e.g. CA.
schema:
type: string
example: CA
- name: category
in: query
description: 'Category: retail_food, healthcare_clinical, sales, operations, skilled_trade, admin_support, customer_service, software, finance_accounting, marketing, education, hr_recruiting, engineering_hardware, public_affairs, science_lab, legal, data_or_analytics, ...'
schema:
type: string
example: healthcare_clinical
- name: remote
in: query
description: 1 = only postings the employer flags remote.
schema:
type: integer
enum:
- 0
- 1
- name: employer_id
in: query
description: Restrict to one employer (ids are in every row).
schema:
type: integer
- name: platform
in: query
description: 'ATS the posting was read from: workday, greenhouse, lever, icims, smartrecruiters, ukg, ashby, workable, ...'
schema:
type: string
example: workday
- name: posting_kind
in: query
description: requisition = a specific opening; evergreen = an always-hiring posting.
schema:
type: string
enum:
- requisition
- evergreen
- name: since
in: query
description: 'YYYY-MM-DD: postings first seen on or after this date.'
schema:
type: string
format: date
example: '2026-09-01'
- name: id
in: query
description: Fetch a single posting by job_id (ignores the other filters).
schema:
type: integer
- name: q
in: query
required: false
description: 'Job search: keywords or a job title, e.g. registered nurse. With q and/or where the endpoint searches (100 rows a page) instead of listing.'
schema:
type: string
- name: where
in: query
required: false
description: 'Job search: City, ST or a 5-digit ZIP. Blank = all of the US.'
schema:
type: string
- name: radius
in: query
required: false
description: 'Job search: miles around where - 10, 25 (default), 30, 50 or 100.'
schema:
type: integer
enum:
- 10
- 25
- 30
- 50
- 100
- name: posted_within_days
in: query
required: false
description: 'Job search: only jobs first seen on the employer''s site within this many days (1-60).'
schema:
type: integer
- name: employment_type
in: query
required: false
description: 'Job search: full_time, part_time, contract, seasonal or temporary.'
schema:
type: string
enum:
- full_time
- part_time
- contract
- seasonal
- temporary
- name: min_pay
in: query
required: false
description: 'Job search: minimum pay, annual or hourly if under 300. Jobs that post no pay are kept.'
schema:
type: number
- name: title_exclude
in: query
required: false
description: 'Job search: comma-separated words; jobs whose title contains any are left out, e.g. senior,travel.'
schema:
type: string
- name: sort
in: query
required: false
description: 'Job search: new, pay or near. Default best match.'
schema:
type: string
enum:
- new
- pay
- near
- name: description
in: query
required: false
description: 'Job search: 1 = include the employer''s full posting text.'
schema:
type: integer
enum:
- 0
- 1
- name: page
in: query
required: false
description: 'Job search: page 1, 2, 3 ... (pass next_page from the previous response).'
schema:
type: integer
responses:
'200':
description: A page of live postings
content:
application/json:
schema:
$ref: '#/components/schemas/JobsPage'
example:
data:
- job_id: 15523093
employer: Lowe's
employer_id: 812
title: Retail Sales - Flooring
location: Plano, TX
state: TX
lat: 33.0198
lng: -96.6989
remote: false
category: retail_food
employment_type: part_time
seniority: entry
level_band: entry
pay_text: $15.00 - $17.50 / hr
comp_structure: hourly
req_edu_level: null
req_fields: null
req_hard_years: 0
skills:
- customer service
- merchandising
benefits: null
posting_kind: requisition
platform: workday
posted_at: '2026-09-05T00:00:00Z'
first_seen_at: '2026-09-05T13:20:11Z'
last_seen_in_feed: '2026-09-08T02:10:44Z'
valid_through: null
apply_url: https://talent.lowes.com/us/en/job/...
status: live
count: 1
next_after: 15523093
quota:
used: 1201
limit: 50000
resets: '2026-10-01'
'401':
description: Missing, unknown or revoked key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Per-minute limit or monthly quota reached
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- ApiKeyAuth: []
components:
schemas:
JobsPage:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Job'
count:
type: integer
next_after:
type: integer
nullable: true
quota:
$ref: '#/components/schemas/Quota'
Job:
type: object
properties:
job_id:
type: integer
employer:
type: string
employer_id:
type: integer
title:
type: string
location:
type: string
state:
type: string
lat:
type: number
nullable: true
lng:
type: number
nullable: true
remote:
type: boolean
category:
type: string
employment_type:
type: string
nullable: true
seniority:
type: string
nullable: true
level_band:
type: string
nullable: true
pay_text:
type: string
nullable: true
comp_structure:
type: string
nullable: true
req_edu_level:
type: string
nullable: true
req_fields:
type: string
nullable: true
req_hard_years:
type: integer
nullable: true
skills:
type: array
items:
type: string
benefits:
type: string
nullable: true
posting_kind:
type: string
enum:
- requisition
- evergreen
platform:
type: string
posted_at:
type: string
nullable: true
first_seen_at:
type: string
last_seen_in_feed:
type: string
valid_through:
type: string
nullable: true
apply_url:
type: string
status:
type: string
pay_annual_mid:
type: integer
nullable: true
description: 'Stated pay annualised to USD: midpoint of the stated range or the single figure; hourly x 2,080; null when no figure is stated (never estimated).'
pay_annual_high:
type: integer
nullable: true
description: 'Stated pay annualised to USD: top of the stated range.'
Error:
type: object
properties:
error:
type: string
message:
type: string
Quota:
type: object
properties:
used:
type: integer
limit:
type: integer
nullable: true
resets:
type: string
nullable: true
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: 'Your vh_... key. Free trial (2,000 credits; 1 credit = 1 job returned), then $3.95 per 1,000: https://veritahire.com/verified-jobs-feed/'