{
  "openapi": "3.0.1",
  "info": {
    "title": "ZipRecruiter Email Scraper",
    "description": "Ziprecruiter email scraper returns, for every email found on ZipRecruiter: email address, provider type, business-or-free flag, mailbox name, role-account flag, deliverability check, disposable flag, company name, domain, country, language, page title, source URL and date found",
    "version": "2.0",
    "x-build-id": "vDJ7Sm3JwEVVO1314"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/premiumscraper~ziprecruiter-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-premiumscraper-ziprecruiter-email-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/premiumscraper~ziprecruiter-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-premiumscraper-ziprecruiter-email-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/premiumscraper~ziprecruiter-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-premiumscraper-ziprecruiter-email-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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords (what business are you looking for?)",
            "minItems": 1,
            "type": "array",
            "description": "Type the job title being hired for, or the employer type - cdl driver, registered nurse, staffing agency. One line per keyword. Related keywords are searched automatically, so keep each line short. Examples: registered nurse, cdl driver, warehouse associate, staffing agency. TIP: give SEVERAL keywords, one per line - each one finds a different set of companies, so three keywords return far more contacts than one.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Location (one only)",
            "type": "string",
            "description": "One town, city, area or postcode. Leave empty to search everywhere. SPELLING MATTERS: the location is searched exactly as written, so a misspelt place returns nothing at all rather than fewer results - there is no place list behind this box, so nothing will correct it for you. Use the spelling local businesses use on their own pages. ⚠️ ONE PLACE OR ONE POSTCODE — NEVER BOTH. This box is searched exactly as you type it, as a single phrase. \"Dhaka 1207\" is not searched as \"Dhaka\" and as \"1207\"; it is searched as the words \"Dhaka 1207\", and almost no page prints a town beside its postcode, so you will get very little. To cover both, run the actor twice — the town on one run, the postcode on the other. ⚠️ CHECK THE SPELLING, and check the postcode. It goes into the search exactly as written, so a misspelt place does not return fewer results — it returns none. Use the spelling local businesses use on their own pages. ✅ THIS IS THE STRONGEST WAY TO TARGET A COUNTRY. What you type here is combined with the contact words in the search, so pages must mention it. That gives a HIGH chance the addresses belong to that area — but still not a guarantee, because an email address itself carries no location and a page can name a town it is not in.",
            "default": ""
          },
          "emailProviders": {
            "title": "Which kinds of email to keep",
            "enum": [
              "both",
              "b2b",
              "b2c"
            ],
            "type": "string",
            "description": "B2B searches for company mailboxes such as info@, sales@ and office@. B2C searches for free-provider addresses such as Gmail, Yahoo and Outlook. Both searches for everything and keeps whatever it finds. IGNORED if you fill in 'Only these email providers' below - naming a provider is the more specific instruction and the two cannot both apply.",
            "default": "both"
          },
          "emailProviderDomains": {
            "title": "Only these email providers (optional)",
            "type": "array",
            "description": "Leave empty unless you want ONE provider. Type @gmail, @yahoo, @outlook - one per line. The whole family is searched, so @yahoo also finds yahoo.co.uk, yahoo.fr and the rest. IMPORTANT: filling this IGNORES the 'Which kinds of email to keep' setting above, and role mailboxes (info@, sales@) are not searched, because those find company domains - the opposite of what you asked for.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "How many emails per keyword?",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many to collect FOR EACH KEYWORD you typed - not for the whole run. Two keywords at 20 gives you up to 40. Start small to see what a site returns, then raise it. TO GET MORE, ADD MORE KEYWORDS - vary them (plumber, emergency plumber, boiler repair). Each one reaches a different set of companies, so three keywords at 50 beats one keyword at 150.",
            "default": 5
          },
          "checkMxRecord": {
            "title": "💲 Check the domain can receive email (MX lookup)",
            "type": "boolean",
            "description": "COSTS EXTRA — only on a row it actually verified. Checks each address's domain can actually receive mail before the row is delivered, and drops the ones that cannot. Off by default because it REDUCES the number of rows you get - that is the point, the ones it removes are dead. Charging: the base price per contact does not change. A small extra is ADDED only on a row where the check actually ran and confirmed the domain. If the lookup cannot complete, nothing extra is charged for that row. The base price per contact does not change; a small extra is ADDED to that row only. Nothing extra is charged when the check cannot run, and turning the switch on costs nothing by itself. Adds a quick per-domain check. It is what stops dead addresses reaching your export, and it costs a little time on a large run - leave it on unless you are in a hurry and will verify elsewhere.",
            "default": false
          },
          "visitPages": {
            "title": "Open the result pages to find more addresses",
            "type": "boolean",
            "description": "A search description is only about 160 characters. Opening the page itself finds mailto: links, hidden addresses and contact pages — usually 3-5x more emails, at a small extra charge per page and a slower run. **Slowest setting in the actor.** Leaving it off keeps a run to minutes; turning it on opens each result's own pages and can multiply the run time several times over. Worth it only when you need contacts that are not visible in the listing itself.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}