{
  "openapi": "3.0.1",
  "info": {
    "title": "🔥 Indeed [Only $0.90💰] Jobs Scraper (Search by keywords)",
    "description": "💰$0.9/1K results. Search Indeed by keyword, country and filters — no URL needed. Returns salary, company rating, full description, the resolved external apply URL and company profile (CEO, size, revenue) across 61 countries. Strict-match mode drops unrelated jobs; date filter pulls only the latest",
    "version": "0.0",
    "x-build-id": "X3eNqldNZFULNhzwb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~apify-indeed-cheerio-keywords-ppr/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-apify-indeed-cheerio-keywords-ppr",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/memo23~apify-indeed-cheerio-keywords-ppr/runs": {
      "post": {
        "operationId": "runs-sync-memo23-apify-indeed-cheerio-keywords-ppr",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/memo23~apify-indeed-cheerio-keywords-ppr/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-apify-indeed-cheerio-keywords-ppr",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "position"
        ],
        "properties": {
          "position": {
            "title": "Positions/keywords for search",
            "type": "string",
            "description": "Any combination of positions or keywords for search",
            "default": "project manager"
          },
          "country": {
            "title": "Country for search",
            "enum": [
              "Argentina",
              "Australia",
              "Austria",
              "Bahrain",
              "Belgium",
              "Brazil",
              "Canada",
              "Chile",
              "China",
              "Colombia",
              "Costa Rica",
              "Czech Republic",
              "Denmark",
              "Ecuador",
              "Egypt",
              "Finland",
              "France",
              "Germany",
              "Greece",
              "Hong Kong",
              "Hungary",
              "India",
              "Indonesia",
              "Ireland",
              "Israel",
              "Italy",
              "Japan",
              "Kuwait",
              "Luxembourg",
              "Mexico",
              "Morocco",
              "Netherlands",
              "New Zealand",
              "Nigeria",
              "Norway",
              "Oman",
              "Pakistan",
              "Panama",
              "Peru",
              "Philippines",
              "Poland",
              "Portugal",
              "Qatar",
              "Romania",
              "Saudi Arabia",
              "Singapore",
              "South Africa",
              "South Korea",
              "Spain",
              "Sweden",
              "Switzerland",
              "Taiwan",
              "Thailand",
              "Turkey",
              "Ukraine",
              "United Arab Emirates",
              "United Kingdom",
              "United States",
              "Uruguay",
              "Venezuela",
              "Vietnam"
            ],
            "type": "string",
            "description": "Select the country for your job search",
            "default": "United States"
          },
          "location": {
            "title": "Location for search",
            "type": "string",
            "description": "Any combination of city, zip code or locality for search",
            "default": ""
          },
          "radius": {
            "title": "Radius (miles)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional search radius in miles around the specified location"
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14"
            ],
            "type": "string",
            "description": "Filter jobs by when they were posted",
            "default": ""
          },
          "postedBy": {
            "title": "Posted By",
            "enum": [
              "BOTH",
              "EMPLOYER",
              "STAFFING_AGENCY"
            ],
            "type": "string",
            "description": "Filter by who posted the job",
            "default": "BOTH"
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Filter by job type (select multiple)",
            "items": {
              "type": "string",
              "enum": [
                "CONTRACT",
                "FULLTIME",
                "PARTTIME",
                "TEMPORARY",
                "INTERNSHIP"
              ],
              "enumTitles": [
                "Contract",
                "Full-time",
                "Part-time",
                "Temporary",
                "Internship"
              ]
            }
          },
          "remoteWork": {
            "title": "Remote Work",
            "enum": [
              "",
              "HYBRID",
              "REMOTE"
            ],
            "type": "string",
            "description": "Filter by remote work type",
            "default": ""
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Sort results by relevance (default) or by date (newest first). Choose Date to collect only the latest postings — ideal for daily runs.",
            "default": "relevance"
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "ENTRY_LEVEL",
              "MID_LEVEL",
              "SENIOR_LEVEL"
            ],
            "type": "string",
            "description": "Filter by the job's required experience level.",
            "default": ""
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Filter to jobs at or above this minimum salary, using Indeed's own (estimate-based) salary filter in the chosen country's currency — e.g. 150000 on a US search filters to ~$150,000+. Supported for major-currency countries (US, UK, Eurozone, CA, AU, and more); ignored for countries without a known currency symbol. Like on Indeed, this filters on Indeed's salary estimate, so some results may show a stated range that starts slightly lower."
          },
          "includeCompanyDetails": {
            "title": "Include Company Details",
            "type": "boolean",
            "description": "Set to true if you want to scrape company details.",
            "default": false
          },
          "enrichEmails": {
            "title": "Enrich with company contact emails (experimental)",
            "type": "boolean",
            "description": "If enabled, tries to find a contact email for each employer by reading the company's own website (works best with 'includeCompanyDetails' enabled, which captures the company website). Adds contactEmail and contactWebsite columns plus a detailed emailEnrichment object. Best-effort.",
            "default": false
          },
          "qualifyByPayment": {
            "title": "💳 Qualify by payment (flag businesses that take money online)",
            "type": "boolean",
            "description": "Requires \"Enrich with contact emails\". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.",
            "default": false
          },
          "onlyExternalJobs": {
            "title": "Include only external sources",
            "type": "boolean",
            "description": "Set to true if you want to only external sources when scraping.",
            "default": false
          },
          "resolveExternalApplyUrl": {
            "title": "Resolve External Apply URL",
            "type": "boolean",
            "description": "When enabled, jobs that redirect to a client site or ATS (have a `thirdPartyApplyUrl`) are followed through Indeed's redirect chain to capture the final external apply URL into `externalApplyUrl`. Adds one extra HTTP request per applicable job and can slow down or destabilise large runs — off by default; enable only if you specifically need the resolved external apply URL.",
            "default": false
          },
          "flattenOutput": {
            "title": "Flatten Output Structure",
            "type": "boolean",
            "description": "Output one clean, flat row per job (positionName, company, salary, location, url, description, etc.) — recommended, and the default. Set to false to instead receive Indeed's full raw nested API response (hundreds of fields, mostly internal).",
            "default": true
          },
          "expandToCities": {
            "title": "Expand Country/Region URLs into Cities",
            "type": "boolean",
            "description": "When enabled (default), search URLs whose location is a country or large region (e.g. `l=Scotland`, `l=United Kingdom`, `l=East+of+England+Region`) are automatically fanned out into a list of major-city search URLs and the results deduped by `jobId`. Indeed caps mobile SERP pagination per query, so the union of city-level queries typically yields 2-5x more total results than the parent region query. Indeed's UI emits `radius=0` (exact-match) for region chips, which would return near-zero jobs at the city level, so a `radius=0` on the parent URL is automatically bumped to `radius=25` (Indeed's UI default) for the city queries. Set to `false` to disable fan-out and scrape the exact URL you provided. No effect when the location is already a city, postcode, or empty.",
            "default": true
          },
          "strictMatch": {
            "title": "Strict keyword match (drop unrelated jobs)",
            "type": "boolean",
            "description": "When enabled, drops any job whose title or description does not contain your search keyword(s). Indeed's own search pads every result page with loosely-related and sponsored jobs (e.g. a 'Real Estate Agent' or 'CDL Driver' for a `typescript` search) — those appear in the output by default because the scraper returns exactly what Indeed returns. Turn this on to keep only genuine keyword matches. Keys on your position/keyword input (or the `q` of a search URL). Leave off (default) to get Indeed's full result set unchanged.",
            "default": false
          },
          "uniqueCompanies": {
            "title": "One job per company (unique companies only)",
            "type": "boolean",
            "description": "When enabled, the output contains at most one job per company — every row is a distinct employer. Dedupes on Indeed's encrypted company id (so 'Acme Inc' and 'Acme Inc.' count as one), falling back to the company name. Note: because many listings share an employer, reaching a target number of unique companies means scanning more jobs, so a narrow search may return fewer unique companies than `maxJobs`. Leave off (default) to return every job.",
            "default": false
          },
          "maxJobs": {
            "title": "Max Jobs",
            "type": "integer",
            "description": "Maximum number of jobs that will be processed.",
            "default": 10000
          },
          "resumeKeywords": {
            "title": "Skills and Keywords",
            "type": "array",
            "description": "⚠️ **This is NOT a search filter** — it does not change which jobs Indeed returns. Each job in the output is scored against these skills: `profileMatchScore` (0–100 = % of your keywords found in the job title + description), plus `profileMatch.matchedKeywords` / `profileMatch.missingKeywords`. Entries are plain strings (`\"TypeScript\"`) or objects with aliases so abbreviations count as the same skill: `{ \"keyword\": \"JavaScript\", \"aliases\": [\"JS\"] }`. Matching is case-insensitive on whole words — `Java` will not match `JavaScript`."
          },
          "storeName": {
            "title": "Name your storage for listings (deduplication and long-term retention), it can only contain letters 'a' through 'z', the digits '0' through '9', and the hyphen ('-') but only in the middle of the string (e.g. 'my-value-1')",
            "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
            "type": "string",
            "description": "Assign a custom name to the Key-Value Store where your scraped listings will be saved. This ensures:\n 1. **Data Deduplication**: Prevents duplicate entries in the storage. \n 2. **Persistent Storage**: Enables long-term retention of listings, beyond default storage limits.\n 3. **Project Management**: Separate datasets by using unique names for different projects or analyses.\n 4. **Data Reuse**: Easily reference and reuse stored data without overwriting.\n (If left blank, the default storage will be used with standard retention limits.)"
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "maximum": 5,
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up (capped at 5 — persistent blocks past that indicate a dead job, and extra retries only burn compute).",
            "default": 4
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}