{
  "openapi": "3.0.1",
  "info": {
    "title": "ZipRecruiter Scraper",
    "description": "ZipRecruiter scraper API for US jobs by title and place. Each row has the title, company, location, employment type, remote flag, posted date and the employer's own apply link, with salary split into the employer's figure and ZipRecruiter's estimate. $0.80 per 1,000 jobs.",
    "version": "0.1",
    "x-build-id": "A8PIXsHsxY5HfKw85"
  },
  "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 the jobs 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."
          },
          "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. ZipRecruiter shows about 60 jobs of one search, so for more, add keywords or paste search URLs for other places. 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. It accepts exactly these values; anything else is rejected."
          },
          "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, as ZipRecruiter files them. Hybrid keeps every job that isn't fully on-site, so remote-optional jobs come with the hybrid ones."
          },
          "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\" keeps only postings that accept an application on ZipRecruiter itself. The rest are dropped and not charged, so a search gives fewer jobs than it shows."
          },
          "salaryMin": {
            "title": "Minimum annual salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "ZipRecruiter's own salary filter. For some postings the pay figure 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."
          },
          "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. Without it you still get a ~200-character summary."
          },
          "egressMode": {
            "title": "Network route",
            "enum": [
              "auto",
              "direct",
              "datacenter",
              "isp"
            ],
            "type": "string",
            "description": "Leave this on Auto. If a search stops with a SEARCH_PAGE_UNAVAILABLE row, wait a few minutes and run it again."
          },
          "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}