{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Job Posting Scraper with Company Contact Enrichment",
    "description": "Scrapes public job postings from Indeed and enriches each one with publicly listed company contact info (email, phone) and firmographics pulled from the hiring company's own website.",
    "version": "2.0",
    "x-build-id": "TuFWIsQW8qdMH3Xx5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ayush_labs~job-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ayush_labs-job-lead-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/ayush_labs~job-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ayush_labs-job-lead-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/ayush_labs~job-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ayush_labs-job-lead-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",
        "required": [
          "searchQueries"
        ],
        "properties": {
          "searchQueries": {
            "title": "Job search queries",
            "type": "array",
            "description": "One search per line. Include job title and location, e.g. 'sales manager in Chicago, IL' or 'react developer remote'.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries to search",
            "type": "array",
            "description": "Which Indeed sites to search. Every query runs against each country selected here. A single query can override this with a prefix, e.g. \"uk: marketing manager in London\". Indeed has no site for Nepal, Bangladesh, Sri Lanka, Kenya or several smaller markets — those cannot be searched.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "uk",
                "ca",
                "au",
                "in",
                "de",
                "fr",
                "nl",
                "sg",
                "ae",
                "ar",
                "at",
                "bh",
                "be",
                "br",
                "cl",
                "cn",
                "co",
                "cr",
                "cz",
                "dk",
                "ec",
                "eg",
                "fi",
                "gr",
                "hk",
                "hu",
                "id",
                "ie",
                "il",
                "it",
                "jp",
                "kw",
                "lu",
                "my",
                "mx",
                "ma",
                "nz",
                "ng",
                "no",
                "om",
                "pk",
                "pa",
                "pe",
                "ph",
                "pl",
                "pt",
                "qa",
                "ro",
                "ru",
                "sa",
                "za",
                "kr",
                "es",
                "se",
                "ch",
                "tw",
                "th",
                "tr",
                "ua",
                "uy",
                "ve",
                "vn"
              ],
              "enumTitles": [
                "United States (us)",
                "United Kingdom (uk)",
                "Canada (ca)",
                "Australia (au)",
                "India (in)",
                "Germany (de)",
                "France (fr)",
                "Netherlands (nl)",
                "Singapore (sg)",
                "United Arab Emirates (ae)",
                "Argentina (ar)",
                "Austria (at)",
                "Bahrain (bh)",
                "Belgium (be)",
                "Brazil (br)",
                "Chile (cl)",
                "China (cn)",
                "Colombia (co)",
                "Costa Rica (cr)",
                "Czechia (cz)",
                "Denmark (dk)",
                "Ecuador (ec)",
                "Egypt (eg)",
                "Finland (fi)",
                "Greece (gr)",
                "Hong Kong (hk)",
                "Hungary (hu)",
                "Indonesia (id)",
                "Ireland (ie)",
                "Israel (il)",
                "Italy (it)",
                "Japan (jp)",
                "Kuwait (kw)",
                "Luxembourg (lu)",
                "Malaysia (my)",
                "Mexico (mx)",
                "Morocco (ma)",
                "New Zealand (nz)",
                "Nigeria (ng)",
                "Norway (no)",
                "Oman (om)",
                "Pakistan (pk)",
                "Panama (pa)",
                "Peru (pe)",
                "Philippines (ph)",
                "Poland (pl)",
                "Portugal (pt)",
                "Qatar (qa)",
                "Romania (ro)",
                "Russia (ru)",
                "Saudi Arabia (sa)",
                "South Africa (za)",
                "South Korea (kr)",
                "Spain (es)",
                "Sweden (se)",
                "Switzerland (ch)",
                "Taiwan (tw)",
                "Thailand (th)",
                "Turkey (tr)",
                "Ukraine (ua)",
                "Uruguay (uy)",
                "Venezuela (ve)",
                "Vietnam (vn)"
              ]
            },
            "default": [
              "us"
            ]
          },
          "searchRadius": {
            "title": "Search radius",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How far around the location to search, in miles (km outside the US). Indeed defaults to 35, which turns a neighbourhood search into a whole-metro one — set 0 to 10 when targeting a specific area such as 'Whitefield, Bengaluru'. Leave empty for Indeed's default."
          },
          "maxResultsPerQuery": {
            "title": "Max job postings per query",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum job postings to scrape per search query. Indeed returns 10 per page, so higher values page through the results.",
            "default": 20
          },
          "maxDaysOld": {
            "title": "Only postings from the last N days",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Restrict results to recently posted jobs. 0 means no date filter. Fresh postings usually make better leads.",
            "default": 0
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only postings Indeed flags as remote.",
            "default": false
          },
          "enrichWithCompanyContact": {
            "title": "Enrich with company contact info",
            "type": "boolean",
            "description": "Visits each hiring company's public website to look for a contact email and phone number (checks pages like /contact, /about, homepage). Turn off for a much faster, cheaper run — you still get the company website, industry and size from Indeed, just no email or phone.",
            "default": true
          },
          "onlyReturnEnrichedLeads": {
            "title": "Only return leads with an email",
            "type": "boolean",
            "description": "Drop rows where no company email was found. Useful on pay-per-result pricing if you only want fully enriched leads. Note: this filters output, not how many postings are scanned.",
            "default": false
          },
          "maxContactPagesPerCompany": {
            "title": "Contact pages to check per company",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many candidate pages (/contact, /contact-us, /about, /about-us, homepage) to try per company before giving up. Higher finds slightly more contacts but costs proportionally more time.",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many search pages to process in parallel. Lower is safer against rate limits and CAPTCHAs.",
            "default": 2
          },
          "debugSaveHtml": {
            "title": "Save raw HTML for debugging",
            "type": "boolean",
            "description": "Saves the raw Indeed HTML to the key-value store. Use this when fields start coming back empty: the markup is what you need to repair the selectors in src/dom.js.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Indeed blocks datacenter IP ranges outright — a datacenter proxy returns 403 on every request. RESIDENTIAL is the only configuration that works; getting through takes a few automatic retries while it finds a clean IP. Do not use UNBLOCKER: it proxies too slowly for a browser and every navigation times out.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}