{
  "openapi": "3.0.1",
  "info": {
    "title": "ZipRecruiter Scraper — Jobs, Salaries & Companies",
    "description": "Scrape ZipRecruiter jobs by keyword, location, filters or URL: title, company, salary range, remote, employment type, posted date, 1-Click Apply; optional full description and company facts.",
    "version": "0.1",
    "x-build-id": "iPs88w0NwOAQIuQqc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~ziprecruiter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-ziprecruiter-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/tortuga~ziprecruiter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-ziprecruiter-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/tortuga~ziprecruiter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-ziprecruiter-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 (job title, skill or company)",
            "type": "array",
            "description": "One search per keyword, e.g. \"registered nurse\", \"python developer\", \"warehouse\". Leave empty to list jobs matching only the location and filters.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where, as you would type it on ZipRecruiter: a city (\"Houston, TX\"), a state (\"Texas\") or a ZIP code (\"10001\"). \"Remote\" = remote jobs. Leave empty for the whole US."
          },
          "radius": {
            "title": "Radius (miles)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Distance around a city or ZIP code. ZipRecruiter's default is 25 miles; the site offers 5, 10, 25, 50 and 100."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "5",
              "10",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted (or refreshed) within this many days.",
            "default": ""
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Only these employment types. Several = any of them.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "contract_to_hire",
                "temporary",
                "as_needed",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Contract to hire",
                "Temporary",
                "Per diem",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Only jobs for these experience levels. Several = any of them.",
            "items": {
              "type": "string",
              "enum": [
                "no_experience",
                "junior",
                "mid",
                "senior"
              ],
              "enumTitles": [
                "No experience",
                "Junior",
                "Mid-level",
                "Senior"
              ]
            }
          },
          "remoteFilter": {
            "title": "Remote",
            "enum": [
              "",
              "only_remote",
              "hybrid",
              "no_remote"
            ],
            "type": "string",
            "description": "Only remote, hybrid or on-site jobs (ZipRecruiter's Remote filter).",
            "default": ""
          },
          "salaryMin": {
            "title": "Minimum salary (USD per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs paying at least this much per year (ZipRecruiter's salary filter; it also uses its own pay estimates)."
          },
          "salaryMax": {
            "title": "Maximum salary (USD per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs paying at most this much per year."
          },
          "quickApplyOnly": {
            "title": "1-Click Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to on ZipRecruiter with 1-Click Apply.",
            "default": false
          },
          "startUrls": {
            "title": "Start URLs (ZipRecruiter search or job pages)",
            "type": "array",
            "description": "Optional: ZipRecruiter search URLs with any filters set on the site, e.g. https://www.ziprecruiter.com/jobs-search?search=nurse&location=Houston%2C+TX&days=5, or single job URLs (https://www.ziprecruiter.com/c/<company>/Job/<title>/-in-<city>?jid=<id>), which are returned with full details.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total (you pay per job saved).",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap for each keyword / start URL, so one search does not use the whole Max jobs budget."
          },
          "splitLargeSearches": {
            "title": "Get more than ZipRecruiter lists per search",
            "type": "boolean",
            "description": "ZipRecruiter lists only about 600-1,100 jobs for any search. When it reports that it cut a search, this runs narrower searches (by employment type, experience level, remote/on-site and posting date) that each list their own jobs, so you get many more. Repeats are dropped and not charged.",
            "default": true
          },
          "includeDetails": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Open each job page for the full description (text and HTML), the employer's requisition id, original posting date, expiry date, occupation category and company facts (website, industries, size, headquarters, about). One extra request and one 'detail' event per job.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new jobs or jobs whose title or pay line changed. Use with a Schedule; unchanged jobs are not charged. With this on, Max jobs is the number of jobs checked per run; set 'Posted within' to watch the newest jobs.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify RESIDENTIAL proxy in the US (the default) passes ZipRecruiter's Cloudflare check; datacenter IPs are challenged more often (the actor then switches to residential by itself). Residential traffic is billed on your Apify plan: about 40 KB per page of 20 jobs (about $0.02 per 1,000 jobs) and about 30 KB per job page with details.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}