{
  "openapi": "3.0.1",
  "info": {
    "title": "ZipRecruiter Scraper API - US Jobs, Salary & Apply URL",
    "description": "Scrape ZipRecruiter jobs: title, company, city, employment type, remote flag, benefits, exact posted date and the employer’s apply URL. Every row flags whether the pay is employer-published or a ZipRecruiter estimate. $0.80/1,000 jobs - the lowest of any established ZipRecruiter scraper.",
    "version": "0.1",
    "x-build-id": "ybXayzadmx9JpmzTV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~ziprecruiter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-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/dami_studio~ziprecruiter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-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/dami_studio~ziprecruiter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-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": {
          "searchQueries": {
            "title": "Job titles or keywords",
            "type": "array",
            "description": "One search per entry, for example \"registered nurse\" or \"warehouse associate\". Leave empty and set a location to get every job in that place.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A city and state (\"Austin, TX\"), a state (\"Texas\") or \"United States\". ZipRecruiter is a US board; ziprecruiter.ca and .co.uk do not serve this data."
          },
          "startUrls": {
            "title": "ZipRecruiter URLs",
            "type": "array",
            "description": "Paste ZipRecruiter search URLs (https://www.ziprecruiter.com/jobs-search?search=...&location=...) or individual job pages (https://www.ziprecruiter.com/c/<Company>/Job/<Title>/-in-<City>,<ST>?jid=...). Search filters in the URL are read and re-used.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many jobs. You are charged only for jobs actually returned."
          },
          "days": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "5",
              "10",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted in the last N days. ZipRecruiter accepts exactly these values; anything else is ignored by the site and silently returns the unfiltered list, so it is rejected here instead."
          },
          "radius": {
            "title": "Search radius (miles)",
            "enum": [
              "",
              "5",
              "10",
              "25",
              "50",
              "5000"
            ],
            "type": "string",
            "description": "Distance from the location. Ignored for state-wide and country-wide locations."
          },
          "locationType": {
            "title": "On-site / remote",
            "enum": [
              "",
              "no_remote",
              "only_remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Restrict to on-site, remote or hybrid postings. Uses ZipRecruiter’s own location-type facet."
          },
          "employmentType": {
            "title": "Employment type",
            "enum": [
              "",
              "full_time",
              "part_time",
              "contract",
              "contract_to_hire",
              "temporary",
              "as_needed",
              "other"
            ],
            "type": "string",
            "description": "Restrict to one employment type. \"As needed / per diem\" is ZipRecruiter’s PRN bucket."
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "no_experience",
              "junior",
              "mid",
              "senior"
            ],
            "type": "string",
            "description": "Restrict to one seniority band, as classified by ZipRecruiter."
          },
          "applyType": {
            "title": "Apply type",
            "enum": [
              "",
              "has_zipapply"
            ],
            "type": "string",
            "description": "\"1-Click Apply\" restricts the search to postings that accept an application on ZipRecruiter itself."
          },
          "salaryMin": {
            "title": "Minimum annual salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "ZipRecruiter's own salary filter. It uses the site's pay figure, which for some postings is an estimate - see \"Only employer-published pay\" below if you need certainty."
          },
          "salaryMax": {
            "title": "Maximum annual salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "ZipRecruiter’s salary ceiling filter, as a whole-dollar annual figure."
          },
          "onlyEmployerPublishedSalary": {
            "title": "Only employer-published pay",
            "type": "boolean",
            "description": "Keep only postings whose pay came from the employer (a structured pay field, or pay written into the job description). Drops ZipRecruiter's own estimates. Dropped rows are NOT charged. About 76% of postings survive this filter."
          },
          "includeDescription": {
            "title": "Fetch full description and company rating",
            "type": "boolean",
            "description": "Adds the complete job description plus the employer's ZipRecruiter review score and review count. Costs one extra request per job, so a run takes roughly three times longer. Without it you still get a ~200-character summary."
          },
          "egressMode": {
            "title": "Network route",
            "enum": [
              "auto",
              "direct",
              "datacenter",
              "isp"
            ],
            "type": "string",
            "description": "\"auto\" uses the plain Apify container address and falls back to Apify datacenter proxy on a block. Change this only if a run gets challenged repeatedly."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Supply your own proxy servers to override the routing above."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}