{
  "openapi": "3.0.1",
  "info": {
    "title": "Scraper for ZipRecruiter — Jobs, Pay & Benefits",
    "description": "Export ZipRecruiter job listings by keyword and location: title, company, structured pay (min/max, period, annualised, employer vs estimate), benefits, remote/on-site, county and ZIP, 1-Click Apply flag and post dates. Optional full descriptions. No login. Not affiliated with ZipRecruiter.",
    "version": "1.0",
    "x-build-id": "0lQg2e2yhR7zTBW8G"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~ziprecruiter-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-ziprecruiter-jobs-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/logiover~ziprecruiter-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-ziprecruiter-jobs-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/logiover~ziprecruiter-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-ziprecruiter-jobs-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles or skills to search, e.g. \"registered nurse\", \"truck driver\", \"python developer\". Each keyword is searched in each location below. Leave empty to list all jobs in the locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to search: \"City, ST\" (Austin, TX), a state code (TX), a ZIP code (78701), \"Remote\" or \"United States\". Leave empty to search the whole United States. One search covers one location within the radius below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "ZipRecruiter search URLs",
            "type": "array",
            "description": "Optional. Paste search result URLs from ziprecruiter.com (https://www.ziprecruiter.com/jobs-search?search=...&location=...) — any filters already in the URL are kept. Pages are walked automatically.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "radius": {
            "title": "Search radius (miles)",
            "enum": [
              "5",
              "10",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "How far from each location to look.",
            "default": "25"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "5",
              "10",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted or refreshed within this window. \"Last 24 hours\" is the setting for a daily scheduled run.",
            "default": "any"
          },
          "employmentType": {
            "title": "Employment type",
            "enum": [
              "any",
              "full_time",
              "part_time",
              "contract",
              "temporary"
            ],
            "type": "string",
            "description": "ZipRecruiter's own employment-type filter.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs ZipRecruiter tags as remote.",
            "default": false
          },
          "quickApplyOnly": {
            "title": "1-Click Apply jobs only",
            "type": "boolean",
            "description": "Keep only jobs that accept ZipRecruiter's 1-Click Apply.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum annual salary (USD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "ZipRecruiter's salary filter: keeps jobs whose annualised pay range reaches at least this amount (e.g. 100000). 0 turns it off.",
            "default": 0
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many unique jobs across all searches. 0 means no limit — one search returns up to ~900 jobs, so add keywords and locations for more.",
            "default": 1000
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Cap on result pages (20 jobs each) per keyword × location. 0 means every page ZipRecruiter has for that search.",
            "default": 0
          },
          "fetchDetails": {
            "title": "Open every job page (full description, industry, company website)",
            "type": "boolean",
            "description": "Adds the full job description, industry, O*NET occupation, education requirement, closing date, company website and employer rating. One extra page per job, so it is roughly 20× slower and costs more proxy traffic — leave off for large exports.",
            "default": false
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many result pages to load at once. Each page takes 7–60 seconds through the unblocking proxy, so parallelism is what makes runs fast. Slow pages are re-requested automatically (hedged), and the run stops the moment Max jobs is reached.",
            "default": 40
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep the UNBLOCKER group. ZipRecruiter refuses ordinary datacenter and residential proxies with HTTP 403.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "UNBLOCKER"
              ]
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}