{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Postings Scraper for ZipRecruiter",
    "description": "Scrape ZipRecruiter job postings and salary data in the US, Canada, UK, Ireland, Germany, France, Australia, India and NZ: company, pay, location, description. Independent tool, not affiliated with, endorsed by, or sponsored by ZipRecruiter, Inc. All trademarks belong to their respective owners.",
    "version": "1.0",
    "x-build-id": "NtViHvOuDuZTdsK6D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~ziprecruiter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-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/parseforge~ziprecruiter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-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/parseforge~ziprecruiter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-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": {
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "ca",
              "uk",
              "ie",
              "de",
              "fr",
              "au",
              "in",
              "nz"
            ],
            "type": "string",
            "description": "Which ZipRecruiter market to search. The United States and Canada share ziprecruiter.com; the other countries each have their own ZipRecruiter site. Left empty, the country is read from the location (for example \"Dublin, Ireland\"), and otherwise the United States is searched. Ignored when you paste URLs, since each URL already names its site."
          },
          "query": {
            "title": "Job title or keyword",
            "type": "string",
            "description": "The job keyword to search for, such as nurse, software engineer, truck driver, or sales."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, region, or ZIP code, such as \"Austin, TX\", \"Toronto, ON\", \"Manchester\" or \"Dublin, Ireland\". Leave empty to search the whole country."
          },
          "maxItems": {
            "title": "Maximum job listings",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "How many job listings to collect per run. A single ZipRecruiter US search goes about 25 to 29 pages deep (roughly 500 to 580 jobs); for more, split the search by location or filters, or paste several URLs."
          },
          "includeDetails": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Open each job page to add the full description (text and HTML) and share links, plus requirements, skills and contact email when the posting has them. On the international sites it also adds structured data such as coordinates and apply details. Search results alone already include title, company, pay, location, employment type, workplace type, benefits and posting date."
          },
          "startUrls": {
            "title": "ZipRecruiter URLs",
            "type": "array",
            "description": "Paste ZipRecruiter search URLs with filters already applied, or individual job URLs, from any supported country (ziprecruiter.com, .ca, .co.uk, .ie, .de, .fr, .com.au, .in, .nz). Use either URLs or the search fields above, not both.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "A ZipRecruiter search results URL or job URL."
                }
              }
            }
          },
          "maxItemsPerStartUrl": {
            "title": "Maximum listings per URL",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "A separate cap for each URL in ZipRecruiter URLs, while Maximum job listings stays the overall run limit."
          },
          "distance": {
            "title": "Search radius",
            "minimum": 0,
            "maximum": 9999,
            "type": "integer",
            "description": "How far around the location to search. In the United States and Canada this is in miles (ZipRecruiter offers 5, 10, 25, 50 and 100; the site default is 25). On the international sites it uses that site's own radius unit."
          },
          "daysPosted": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only jobs posted in the last N days, for example 1, 3, 7 or 30."
          },
          "workplace": {
            "title": "Workplace",
            "enum": [
              "on_site",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Keep only on-site, remote, or hybrid jobs. In the United States and Canada this is ZipRecruiter's own filter; elsewhere it is read from the location and description."
          },
          "employmentTypes": {
            "title": "Employment type (US and Canada)",
            "type": "array",
            "description": "Keep only these employment types. Pick one or more.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "contract_to_hire",
                "temporary",
                "internship",
                "as_needed",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Contract to hire",
                "Temporary",
                "Internship",
                "As needed",
                "Other"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience level (US and Canada)",
            "type": "array",
            "description": "Keep only jobs at these experience levels. Pick one or more.",
            "items": {
              "type": "string",
              "enum": [
                "no_experience",
                "junior",
                "mid",
                "senior"
              ],
              "enumTitles": [
                "No experience",
                "Junior",
                "Mid level",
                "Senior"
              ]
            }
          },
          "salaryMin": {
            "title": "Minimum annual salary (US and Canada)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose annual pay reaches at least this amount, for example 80000."
          },
          "salaryMax": {
            "title": "Maximum annual salary (US and Canada)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose annual pay does not exceed this amount."
          },
          "quickApplyOnly": {
            "title": "Quick Apply only (US and Canada)",
            "type": "boolean",
            "description": "Keep only jobs you can apply to directly on ZipRecruiter."
          },
          "externalApplyOnly": {
            "title": "External apply only",
            "type": "boolean",
            "description": "Keep only jobs whose apply button sends candidates to the employer's own site or applicant tracking system."
          },
          "sortBy": {
            "title": "Sort by (international sites)",
            "enum": [
              "best_match",
              "published_at"
            ],
            "type": "string",
            "description": "Best match or newest first. ZipRecruiter US and Canada have no sort option, so this applies to the other countries only."
          },
          "latitude": {
            "title": "Latitude (international sites)",
            "type": "number",
            "description": "Optional latitude for a coordinate-based search on the international sites."
          },
          "longitude": {
            "title": "Longitude (international sites)",
            "type": "number",
            "description": "Optional longitude for a coordinate-based search on the international sites."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}