{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs API | Search Listings, Salaries, Descriptions",
    "description": "Indeed job listings as clean, structured JSON. Search by keyword and location on any Indeed country site, list every job on a company page, or fetch exact job URLs. Get title, company, pay, type, benefits, apply link, and the full description as Markdown, text, or HTML. MCP-ready.",
    "version": "0.0",
    "x-build-id": "D5d0Nc0C4XjD0EWVy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/johnvc~indeed-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-johnvc-indeed-jobs-api",
        "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/johnvc~indeed-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-johnvc-indeed-jobs-api",
        "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/johnvc~indeed-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-johnvc-indeed-jobs-api",
        "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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url",
              "company"
            ],
            "type": "string",
            "description": "Search finds jobs from keywords, a location and filters. URLs collects exact postings or search-results pages you already hold. Company lists every job on an Indeed company jobs page.",
            "default": "search"
          },
          "keywords": {
            "title": "Search keywords",
            "maxItems": 5,
            "type": "array",
            "description": "Job titles or keywords to search, for example \"software engineer\" or \"registered nurse\". Each keyword is searched separately and they run in parallel. Indeed's own query syntax works: quotes for an exact phrase, a leading minus to exclude a word, title:(\"...\") to match titles only. Used in search mode. Up to 5 per run. Need larger batches? Contact us and we can raise this limit for your account.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where to search, for example \"New York, NY\", \"Austin, TX\", \"90210\" or \"Remote\". Leave empty to search the whole country. Used in search mode."
          },
          "country": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country code of the Indeed site to search, for example US, GB, CA, AU, IN, DE, FR, NL, ES, IT, BR, MX, JP or SG. About 60 countries are supported; the matching country site is selected automatically.",
            "default": "US"
          },
          "domain": {
            "title": "Indeed domain (advanced)",
            "type": "string",
            "description": "Optional override for the Indeed host, for example www.indeed.com, uk.indeed.com or fr.indeed.com. Leave empty and the correct host is chosen from the country code above."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "Last 24 hours",
              "Last 3 days",
              "Last 7 days",
              "Last 14 days"
            ],
            "type": "string",
            "description": "Only return jobs posted within this window. Leave as Any time for no date filter. Used in search mode.",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Only return these employment types. Leave empty for all types. Each selected type is searched separately for every keyword, so several types cost more time than one. Used in search mode.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "permanent",
                "new_grad",
                "commission"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Permanent",
                "New graduate",
                "Commission"
              ]
            },
            "default": []
          },
          "remote": {
            "title": "Remote or hybrid",
            "enum": [
              "any",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Only return remote or hybrid roles. Leave as Any for all work arrangements. Used in search mode.",
            "default": "any"
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "entry",
              "mid",
              "senior"
            ],
            "type": "string",
            "description": "Only return roles Indeed classifies at this level. Leave as Any for all levels. Used in search mode.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance returns Indeed's best matches first. Date returns the newest postings first, which is the right choice for a scheduled watch. Used in search mode.",
            "default": "relevance"
          },
          "easyApplyOnly": {
            "title": "Easy apply only",
            "type": "boolean",
            "description": "Only return postings that accept Indeed's one-click apply. Used in search mode.",
            "default": false
          },
          "minPay": {
            "title": "Minimum pay",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only return jobs whose stated pay is at least this much per year, in the local currency of the Indeed site being searched. Hourly, daily, weekly and monthly figures are converted to a yearly amount before comparing. Jobs that state no pay are left out when a floor is set. Leave empty for no pay filter. Used in search mode."
          },
          "locationRadiusMiles": {
            "title": "Location radius (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How far from the location to search, in miles. Indeed offers 0, 5, 10, 15, 25, 35, 50 or 100; other values snap to the nearest. Leave empty for the site default. Used in search mode."
          },
          "jobUrls": {
            "title": "Job or search URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Indeed URLs to collect. A job posting URL such as https://www.indeed.com/viewjob?jk=1234567890abcdef returns that one job. A search-results URL such as https://www.indeed.com/jobs?q=nurse&l=Dallas%2C+TX returns up to the result limit below, keeping every filter in the URL. Country sites such as fr.indeed.com are accepted. Used in URL mode. Up to 100 per run. Need larger batches? Contact us and we can raise this limit for your account.",
            "items": {
              "type": "string"
            }
          },
          "companyJobUrls": {
            "title": "Company jobs page URLs",
            "maxItems": 10,
            "type": "array",
            "description": "Indeed company jobs pages, for example https://www.indeed.com/cmp/Semrush/jobs. Every job found on each page is returned, up to the result limit below. Used in company mode. Up to 10 per run. Need larger batches? Contact us and we can raise this limit for your account.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerInput": {
            "title": "Max jobs per keyword or page",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many jobs to return for each keyword or search URL in search and URL modes, or for each page in company mode. You are charged per job returned, so this is also your cost control. Ignored for single job URLs, which return one job each. A run that returns no jobs is never charged.",
            "default": 50
          },
          "uniqueJobsOnly": {
            "title": "Unique jobs only",
            "type": "boolean",
            "description": "Return each job once per run, even when several keywords or URLs find it. Turn off to keep duplicates and see which input found which job.",
            "default": true
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Add the employer's industry, size, revenue, headquarters and profile description to each job, from Indeed's company pages. Charged once per distinct employer on top of the per-job fee. Off by default.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "markdown",
              "text",
              "html",
              "all"
            ],
            "type": "string",
            "description": "How to return the job description. Markdown keeps the headings and bullet lists and is the most compact form for an AI agent to read. Plain text strips all formatting. HTML is the original rich text. All returns every format on the same row.",
            "default": "markdown"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}