# Indeed API — live job search, salary data & company profiles from indeed.com (60+ country sites)

> Search live job postings on Indeed by keyword and location. Each result includes the full job description, salary range, employer details, posting date, apply link, employment type and remote flag. Filter by job type, remote/hybrid, seniority, posting date and radius. Covers 60+ Indeed country sites.
> ReefAPI engine `indeed` · 7 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/indeed/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /indeed/v1/jobs/search — 1 credit
Search live job postings on Indeed by keyword and location. Each result includes the full job description, salary range, employer details, posting date, apply link, employment type and remote flag. Filter by job type, remote/hybrid, seniority, posting date and radius. Covers 60+ Indeed country sites.

**Parameters:**
- `query` (string, required) — What job to search for — job title, skill or company keyword.
- `country` (enum, optional, default "US") — Indeed country site to search. Each country is a separate Indeed site with its own jobs. [one of: US, CA, MX, UK, IE, DE, FR, ES, IT, NL, CH, AT, BE, LU, PT, SE, DK, NO, FI, PL, CZ, HU, RO, GR, UA, TR, AE, SA, QA, KW, BH, OM, IL, ZA, EG, MA, NG, IN, PK, SG, HK, PH, MY, ID, JP, KR, TW, TH, VN, AU, NZ, BR, AR, CL, CO, PE, EC, CR, PA, UY, VE]
- `location` (string, optional) — City, region or postal code to search around. Leave empty to search the whole country.
- `max_results` (integer, optional, default 60) — How many jobs to return (1–1000). The engine pages internally — no page/cursor needed.
- `sort_by` (enum, optional, default "relevance") — Result ordering. [one of: relevance, date]
- `job_type` (enum, optional) — Only return jobs of this employment type. [one of: fulltime, parttime, contract, internship, temporary, permanent, seasonal]
- `remote` (boolean, optional, default false) — Only remote jobs.
- `hybrid` (boolean, optional, default false) — Only hybrid (part-remote) jobs.
- `level` (enum, optional) — Only jobs at this seniority level. [one of: entry_level, mid_level, senior_level]
- `from_days` (enum, optional) — Only jobs posted within the last N days. Dropdown values work everywhere; other day-counts work on the primary API path. [one of: 1, 3, 7, 14]
- `radius` (enum, optional) — Search radius in miles around `location` (only used when a location is given). Dropdown values work everywhere; other mile-counts work on the primary API path. [one of: 0, 5, 10, 15, 25, 35, 50, 100]
- `include_detail` (boolean, optional, default false) — Force-fetch the full job description per job on the slow fallback path. Normally unnecessary — descriptions come inline.

**Returns:** jobs[]{jobkey, title, company, formatted_location, city, state, country, remote, employment_types, job_level, salary_min, salary_max, salary_period, posted_iso, description, indeed_url, company_url}

**Example request body:**
```json
{
  "query": "python developer",
  "location": "New York",
  "country": "US",
  "max_results": 60
}
```

### POST /indeed/v1/job — 1 credit
Get the full detail of one or more specific jobs by their Indeed job key (or job URL). Returns the complete job description, salary, employer details, location, posting date, skills, benefits and apply link for each. Pass several keys at once to fetch them in a single call.

**Parameters:**
- `jobkey` (array, required) — One or more Indeed job keys (the 16-character id from a job URL, e.g. ?jk=c64905855731be67) or full Indeed job URLs. Accepts a single value or a list.
- `country` (enum, optional, default "US") — Indeed country site to search. Each country is a separate Indeed site with its own jobs. [one of: US, CA, MX, UK, IE, DE, FR, ES, IT, NL, CH, AT, BE, LU, PT, SE, DK, NO, FI, PL, CZ, HU, RO, GR, UA, TR, AE, SA, QA, KW, BH, OM, IL, ZA, EG, MA, NG, IN, PK, SG, HK, PH, MY, ID, JP, KR, TW, TH, VN, AU, NZ, BR, AR, CL, CO, PE, EC, CR, PA, UY, VE]

**Returns:** jobs[]{jobkey, title, company, formatted_location, salary_min, salary_max, salary_period, posted_iso, description, indeed_skills, benefits, employment_types, job_level, apply_url, company_industry, company_url}

### POST /indeed/v1/company — 2 credits
Look up a company on Indeed: profile (industry, size, revenue, HQ, founded year, description, website), reputation (overall rating, review count, CEO approval) and optionally the company's open jobs.

**Parameters:**
- `company` (string, required) — Company name or Indeed company slug (the part after indeed.com/cmp/).
- `country` (enum, optional, default "US") — Indeed country site to search. Each country is a separate Indeed site with its own jobs. [one of: US, CA, MX, UK, IE, DE, FR, ES, IT, NL, CH, AT, BE, LU, PT, SE, DK, NO, FI, PL, CZ, HU, RO, GR, UA, TR, AE, SA, QA, KW, BH, OM, IL, ZA, EG, MA, NG, IN, PK, SG, HK, PH, MY, ID, JP, KR, TW, TH, VN, AU, NZ, BR, AR, CL, CO, PE, EC, CR, PA, UY, VE]
- `include_jobs` (boolean, optional, default true) — Also list the company's open jobs.
- `max_jobs` (integer, optional, default 50) — How many of the company's jobs to return (1–500).

**Returns:** company{name, industry, sectors, description, founded_year, headquarters, employee_range, revenue_range, website, rating, review_count, ceo_approval_pct, company_url} + jobs[]{title, formatted_location, salary_text, posted_relative, indeed_url, …}

### POST /indeed/v1/company/search — 1 credit
Find companies on Indeed by name or keyword (optionally near a location). Returns a ranked list of companies with each one's overall rating, review count, industry sectors, logo and links to its Indeed profile, jobs, reviews and salaries pages.

**Parameters:**
- `query` (string, required) — Company name or keyword to search for (e.g. a name, industry or product).
- `country` (enum, optional, default "US") — Indeed country site to search. Each country is a separate Indeed site with its own jobs. [one of: US, CA, MX, UK, IE, DE, FR, ES, IT, NL, CH, AT, BE, LU, PT, SE, DK, NO, FI, PL, CZ, HU, RO, GR, UA, TR, AE, SA, QA, KW, BH, OM, IL, ZA, EG, MA, NG, IN, PK, SG, HK, PH, MY, ID, JP, KR, TW, TH, VN, AU, NZ, BR, AR, CL, CO, PE, EC, CR, PA, UY, VE]
- `location` (string, optional) — Optional city or region to bias the company search.
- `max_results` (integer, optional, default 50) — How many companies to return (1–50, one page).

**Returns:** companies[]{name, company_slug, company_url, rating, review_count, sectors, logo_url, description, jobs_url, reviews_url, salaries_url}

**Example request body:**
```json
{
  "query": "software",
  "country": "US",
  "max_results": 20
}
```

### POST /indeed/v1/company/reviews — 1 credit
Get a company's employee reviews from Indeed (review text, overall rating, the 5 sub-ratings — work/life balance, compensation, management, culture, job security — job title, location and date). Pass the company name or Indeed /cmp slug; paginate with `start`.

**Parameters:**
- `company` (string, required) — Company name or Indeed /cmp slug.
- `max_reviews` (integer, optional, default 20) — How many reviews to return from this page (1–20).
- `start` (integer, optional, default 0) — Pagination offset (0, 20, 40 …).
- `sort` (enum, optional, default "relevance") — How to order the reviews. [one of: relevance, helpfulness, rating_desc, rating_asc, date_desc]

**Returns:** company, encoded_fcc_id, review_count_total, reviews[]{title, text, overall_rating, ratings{work_life_balance,compensation_benefits,management,culture_values,job_security_advancement}, job_title, location, submitted, current_employee, helpful, review_url}

### POST /indeed/v1/company/salaries — 1 credit
Get a company's salary breakdown by job title from Indeed (average pay, pay period and the number of salaries reported per role). Pass the company name or Indeed /cmp slug.

**Parameters:**
- `company` (string, required) — Company name or Indeed /cmp slug.

**Returns:** company, salaries[]{job_title, average_pay, period, currency, salaries_reported, url}

### POST /indeed/v1/estimated_salary — 1 credit
Estimate the market salary for a job title (optionally in a specific US location) from Indeed's salary data — median/mean/min/max/std + sample size + average cash bonus, plus the top-paying companies, top-paid cities, related job titles and a per-US-state average map. Both the location-specific estimate and the national estimate are returned.

**Parameters:**
- `job_title` (string, required) — The job title to estimate pay for (e.g. 'software engineer', 'registered nurse', 'truck driver').
- `location` (string, optional) — Optional US city or state to localise the estimate (e.g. 'Austin, TX', 'California'). Omit for the national figure.

**Returns:** job_title, location, currency, local_estimate{median,min,max,mean,std,sample_size,period,cash_bonus_mean}, national_estimate{…}, top_paying_companies[]{name,salary_mean,salary_period,review_count}, top_paid_cities[]{city,mean}, related_titles[], avg_salary_by_us_state{ST:amount}

**Example request body:**
```json
{
  "job_title": "software engineer"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=indeed
- Human docs page: https://reefapi.com/docs/indeed
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
