{
  "openapi": "3.0.1",
  "info": {
    "title": "Ziprecruiter $1💰 Keyword & URL Job Scraper",
    "description": "From $1/1k. Pull structured job listings from ziprecruiter.com with titles, companies, salaries, locations, benefits, apply URLs, and full descriptions. Search with filters or paste ZipRecruiter URLs directly. Automatically paginates results with simple pay-per-result pricing and no subscription.",
    "version": "1.0",
    "x-build-id": "81Zo5pYHrlq2cfe8d"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~ziprecruiter-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-ziprecruiter-com-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/abotapi~ziprecruiter-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-ziprecruiter-com-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/abotapi~ziprecruiter-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-ziprecruiter-com-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "1. Search mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode = pick keywords + location + filters below. URL mode = paste any ziprecruiter.com search or job URL refined in your browser.",
            "default": "search"
          },
          "queries": {
            "title": "Keywords",
            "type": "array",
            "description": "Free-text search terms (e.g. \"software engineer\", \"registered nurse\", \"data analyst\"). One scrape per keyword. Leave empty to browse without a keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "City + state, ZIP, or \"Remote\". Examples: \"New York, NY\", \"Chicago, IL\", \"94103\", \"Remote\". Leave empty to search nationwide."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "1",
              "5",
              "10",
              "30"
            ],
            "type": "string",
            "description": "Only return jobs posted within this window. \"Any time\" walks the unfiltered SERP.",
            "default": "any"
          },
          "employmentType": {
            "title": "Employment type",
            "enum": [
              "any",
              "full_time",
              "part_time",
              "contract",
              "temporary",
              "internship"
            ],
            "type": "string",
            "description": "Filter by employment scope. \"Any\" walks the unfiltered SERP.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Only return jobs flagged as remote.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum annual salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return jobs whose advertised pay is at or above this annual figure. Leave at 0 for no salary floor.",
            "default": 0
          },
          "radius": {
            "title": "Search radius (miles)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Distance around the location to include. Leave at 0 to use ZipRecruiter's default radius.",
            "default": 0
          },
          "skipSponsored": {
            "title": "Skip sponsored placements",
            "type": "boolean",
            "description": "Drop sponsored / promoted job cards. Applied as a client-side filter.",
            "default": false
          },
          "urls": {
            "title": "Search URLs (URL mode)",
            "type": "array",
            "description": "One or more ziprecruiter.com URLs. Examples: https://www.ziprecruiter.com/jobs-search?search=software+engineer&location=Remote, or a single job URL like https://www.ziprecruiter.com/c/Company/Job/Title/-in-City,ST?jid=abc123. Multi-URL supported; each URL pages forward independently. Filter fields above are ignored.",
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on how many SERP pages to walk per keyword × location combination (or per pasted URL). Each page returns up to 20 listings, so 50 pages ≈ 1,000 listings per search. Use `maxListings` in tandem to cap the total budget across all searches.",
            "default": 1
          },
          "maxListings": {
            "title": "Max listings (total)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many listings across all searches. 0 = no cap.",
            "default": 0
          },
          "fetchDetails": {
            "title": "Fetch detail pages (richer data)",
            "type": "boolean",
            "description": "When ON, also fetch each job's detail page for the full HTML description, structured street address, industry, valid-through date, and verified salary. SERP cards already carry id, title, company, location, salary, employment type, benefits, snippet, and posted date, so most feeds work great with this OFF (faster and cheaper). Default OFF.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "ZipRecruiter requires US residential routing (Datacenter exit IPs are rejected by the upstream edge). The default below works on Apify Starter and higher. Free plans without residential access can paste their own residential proxy URLs in this field."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}