{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Job Scraper",
    "description": "Indeed Job Scraper extracts job listings from Indeed search results. It collects job titles, company names, locations, salaries, job descriptions, posting dates, and job URLs. Ideal for job market research, recruitment insights, salary analysis, and hiring trend monitoring.",
    "version": "0.1",
    "x-build-id": "leiiRqqh5cGiLOBTN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~indeed-job-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-indeed-job-scraper",
        "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/scraper-engine~indeed-job-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-indeed-job-scraper",
        "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/scraper-engine~indeed-job-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-indeed-job-scraper",
        "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",
        "properties": {
          "countryCode": {
            "title": "🌍 Country",
            "enum": [
              "us",
              "ae",
              "ar",
              "au",
              "at",
              "bh",
              "be",
              "br",
              "ca",
              "cl",
              "cn",
              "co",
              "cr",
              "cz",
              "dk",
              "ec",
              "eg",
              "es",
              "fi",
              "fr",
              "de",
              "gr",
              "hk",
              "hu",
              "in",
              "id",
              "ie",
              "il",
              "it",
              "jp",
              "kr",
              "kw",
              "lu",
              "my",
              "mx",
              "ma",
              "nl",
              "nz",
              "ng",
              "no",
              "om",
              "pk",
              "pa",
              "pe",
              "ph",
              "pl",
              "pt",
              "qa",
              "ro",
              "ru",
              "sa",
              "sg",
              "za",
              "se",
              "ch",
              "tw",
              "th",
              "tr",
              "uk",
              "uy",
              "ve",
              "vn"
            ],
            "type": "string",
            "description": "Select the Indeed country domain to scrape from.",
            "default": "us"
          },
          "query": {
            "title": "📝 Query",
            "type": "string",
            "description": "Job search keywords (e.g. job title, skills). Required when using Option 1.",
            "default": "Sales"
          },
          "location": {
            "title": "📍 Location (city, state, zip code or 'remote')",
            "type": "string",
            "description": "Job location for search. Leave empty for no location filter.",
            "default": ""
          },
          "maxRows": {
            "title": "📦 Max rows (listings)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of jobs to scrape in total.",
            "default": 10
          },
          "radius": {
            "title": "📏 Radius",
            "enum": [
              "",
              "0",
              "5",
              "10",
              "15",
              "25",
              "35",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Search radius from location.",
            "default": ""
          },
          "remote": {
            "title": "🏠 Remote",
            "enum": [
              "",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Filter by remote or hybrid work. 'Remote' is applied server-side; 'Hybrid' is post-filtered on description/attributes.",
            "default": ""
          },
          "level": {
            "title": "🎯 Job level",
            "enum": [
              "",
              "entry_level",
              "mid_level",
              "senior_level"
            ],
            "type": "string",
            "description": "Experience level (US only). Post-filtered on title/attributes/description.",
            "default": ""
          },
          "fromDays": {
            "title": "📅 From days",
            "enum": [
              "0",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted in the last N days. NOTE: server-side this is mutually exclusive with jobType / remote — when set, those become post-filters.",
            "default": "0"
          },
          "sort": {
            "title": "↕️ Sort",
            "enum": [
              "",
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Sort results by relevance or date.",
            "default": "relevance"
          },
          "jobType": {
            "title": "💼 Job type",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "volunteer",
              "permanent",
              "seasonal",
              "freelance"
            ],
            "type": "string",
            "description": "Filter by employment type. Full/part-time/contract/internship are server-side; temporary/permanent/seasonal/freelance are post-filtered on text.",
            "default": ""
          },
          "urls": {
            "title": "🌐 Start URLs",
            "type": "array",
            "description": "List of Indeed search or company URLs (https://www.indeed.com/jobs?q=…&l=… or https://www.indeed.com/cmp/<name>). When provided, each URL becomes its own search; URL parameters override the top-level config (Option 1 is bypassed).",
            "items": {
              "type": "string"
            }
          },
          "maxRowsPerUrl": {
            "title": "📄 Max rows per URL",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Optional per-URL cap when using Option 2 with multiple URLs. Leave empty to let `Max rows` be the only ceiling — recommended when you only have 1 Start URL, otherwise this cap will silently limit you below `Max rows`."
          },
          "includeSimilarJobs": {
            "title": "🧩 Include similar jobs",
            "type": "boolean",
            "description": "(No-op for the mobile-API path — Indeed's GraphQL endpoint does not return 'View similar jobs' placeholder cards.) Kept for input-schema compatibility.",
            "default": true
          },
          "enableUniqueJobs": {
            "title": "✅ Unique jobs only",
            "type": "boolean",
            "description": "Deduplicate by Indeed job key across pages and URLs.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration (optional)",
            "type": "object",
            "description": "By default no proxy is used (the mobile API usually doesn't need one). On 401/403/429 the actor falls back to datacenter then residential proxy (3 retries per tier). When running on Apify, the default tier is residential."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}