# Real-Time Indeed Data - Indeed Job Search, Job Details & Company Reviews > Fast and reliable Indeed job search, full job details, and company reviews in real-time - job descriptions, direct apply links, salaries, employer ratings, and more. ## Overview Real-Time Indeed Data is a fast and reliable API for job postings and employer reviews from Indeed in real-time. It returns structured JSON via REST. Who is this API for: developers building job boards and aggregators, recruiting and talent-intelligence tools, employer-reputation analysis, and compensation research. What it returns: keyword job search with the full description, coordinates, salary and a direct employer apply link in the search response itself; full details for up to 20 job ids per request; and company reviews with the aggregate rating, review count, per-category ratings, the one-to-five star distribution, review topics, the aspects employees rate highest and lowest, and the review list. Every job object is a superset of the JSearch job contract. Need help integrating? Contact support@openwebninja.com. For high volume / large scale plans, please contact support@openwebninja.com. ## Endpoints ### GET /search - Search Jobs Search Indeed for jobs. Parameters: - **query** (string, required): Free-text search query, e.g. `software engineer`. Exactly one query per request; a multi-valued `query` is rejected with 400 rather than silently served as one. - location (string): Where to search, in Indeed's own format, e.g. `New York, NY`, `London`, `Berlin`. Omit to search the whole market. - page (integer, default: `1`): 1-based page number. 10 jobs per page. Values above 50 are clamped to 50. - num_pages (integer, default: `1`): How many pages to return in one response. A full job runs about 12 KB, so beyond roughly 450 jobs the response is trimmed to fit the 6 MB limit and `parameters.response_truncated` is set. You are billed only for pages returned. Pass `fields` to keep a deep window intact. - country (string, default: `us`): ISO 3166-1 alpha-2 market code. Sent to Indeed as a header, so any market is reachable regardless of the proxy exit country (verified US, GB, DE, CA, IN, AU). - language (string): ISO 639-1 language. Defaults to the primary language of `country`. - date_posted (string, default: `all`, allowed: all | today | 3days | week | month): Only return jobs posted within this window. `all` (the default) applies no date filter. Combining this with any other filter is fully supported - see the description at the top of this document for how. - work_from_home (boolean): When `true`, return only jobs Indeed tags as Remote. Hybrid roles are excluded; see `job_indeed_is_hybrid` on the job object. - employment_types (string, allowed: FULLTIME | CONTRACTOR | PARTTIME | INTERN): Comma-delimited list. A job matches if it carries **any** of the given types. Indeed also tags Temporary and Seasonal, which have no enum member here and are visible via `job_indeed_attributes`. - experience_level (string, allowed: ENTRY_LEVEL | MID_LEVEL | SENIOR_LEVEL | NO_EXPERIENCE): Comma-delimited list of seniority levels. A job matches if it carries **any** of them. Enforced against Indeed's own seniority tags. - min_salary (number): Minimum **annual** salary. Applied to the salary the employer actually stated, annualised from `job_salary_period`. Jobs with no stated salary are excluded, because they cannot be asserted to qualify. - max_salary (number): Maximum **annual** salary. Same semantics as `min_salary`. - radius (number): Search radius around `location`, in **kilometres**. Passed through to Indeed exactly, not snapped to a coarse menu. Values above 10000 are clamped. - exclude_job_publishers (string): Comma-delimited list of publishers to drop, matched case-insensitively against `job_publisher`. Applied locally; Indeed has no upstream equivalent. - fields (string): Comma-delimited projection. Any key of the job object is valid; `job_id` and `job_title` are always included. An unknown field is a 400. Also the mechanism for pulling a deep result set in one call - see `num_pages`. Full URL: `https://api.openwebninja.com/realtime-indeed-data/search` ### GET /job-details - Job Details Fetch full details for up to 20 jobs in a single request. Parameters: - **job_id** (string, required): Comma-delimited list of up to 20 `job_id` values taken from a `/search` response. The raw 16-hex `job_uid` is also accepted. An id this API did not mint, or one Indeed no longer knows, is simply absent from the response array rather than failing the whole request. - country (string, default: `us`): ISO 3166-1 alpha-2 market code. - language (string): ISO 639-1 language. Defaults to the primary language of `country`. - fields (string): Comma-delimited projection, as on `/search`. Full URL: `https://api.openwebninja.com/realtime-indeed-data/job-details` ### GET /company-reviews - Company Reviews Employee reviews for one company, with its overall rating, the five category ratings and the 1-5 star distribution. Parameters: - **company** (string, required): The company, as an Indeed `/cmp` slug (`Lutron-Electronics`), a full or relative `/cmp` URL, or a free-text name. Slugs and URLs are free; `job_indeed_company_page_url` works directly. A free-text name is resolved through Indeed's company search and billed as one extra request. An unknown slug is a 404. - page (integer, default: `1`): 1-based page number. 20 reviews per page. Values above 100 are clamped to 100. - num_pages (integer, default: `1`): How many consecutive pages to fetch and concatenate, starting at `page`. Values above 10 are clamped to 10 - a page costs ~2.9 s at the measured median, and the Lambda budget is 90 s. - sort (string, default: `relevance`, allowed: relevance | helpfulness | rating_desc | rating_asc): Review ordering, applied by Indeed. `relevance` (default) is Indeed's own order, which is already newest-first. `helpfulness` puts most-helpful first. `rating_desc` and `rating_asc` sort by star rating. There is deliberately no date value: Indeed accepts one and silently ignores it, and the default is already date order. - country (string): Which country's reviews to return (Indeed's `fcountry`), as a 2-letter code, or `ALL` for every country. This is **not** the proxy exit market. Indeed's default view is already scoped to US, which is why `company_review_count` and `company_filtered_review_count` normally differ. - location (string): Narrow to one location within the selected country, in Indeed's own format (`Coopersburg, PA`). **Requires a 2-letter `country`.** Indeed ignores this filter without one, so it is rejected with a 400 rather than accepted and silently dropped. - topic (string, allowed: wlbalance | paybenefits | jobsecadv | mgmt | culture): Return only reviews that discuss one topic. The ids and their per-company review counts and ratings are returned in `company_review_topics`. A value outside this set is silently ignored by Indeed, so it is rejected with a 400 here. - job_title (string): Return only reviews written by people with this job title. - text (string): Full-text search within the company's reviews. Full URL: `https://api.openwebninja.com/realtime-indeed-data/company-reviews` ## Base URL and Authentication - Base URL: `https://api.openwebninja.com/realtime-indeed-data` - Auth: API key in the `x-api-key` header. Get a key by subscribing (free tier available) at https://app.openwebninja.com/api/realtime-indeed-data ## Topics indeed jobs api, indeed job search api, job postings api, job details api, company reviews api, employer ratings api, recruiting api, talent intelligence api, salary data api, jobs data api ## Links - API page: https://www.openwebninja.com/api/real-time-indeed-data - Get an API key / subscribe: https://app.openwebninja.com/api/realtime-indeed-data - Pricing & plans: https://app.openwebninja.com/api/realtime-indeed-data/pricing - Website: https://www.openwebninja.com - OpenAPI spec: https://openwebninja.s3.us-east-1.amazonaws.com/portal/openapi/realtime_indeed_data.yaml - Support: support@openwebninja.com _Last updated: 2026-09-14_