# Zillow Scraper - Homes for Sale, Rent, Sold & Price Drops (`scrapewise/zillow-scraper`) Actor

Scrape Zillow homes for sale, for rent and sold by city, ZIP or search URL: price, beds, baths, sqft, Zestimate, price cuts, brokerage, photos. Schedule it daily: only new listings and price drops. Optional home page with facts. Error rows are free.

- **URL**: https://apify.com/scrapewise/zillow-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 home delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zillow Scraper: homes for sale, for rent and sold, with new-listing and price-drop alerts

Scrape [Zillow](https://www.zillow.com) search results **without an account, cookies or a browser**. Type a US city,
ZIP code or neighborhood (any spelling: `Austin, TX`, `austin tx`, `AUSTIN`, `78701`) or paste a search URL with your
filters, and get every home with price, beds, baths, square feet, price per sqft, lot size, home type, Zestimate and
Rent Zestimate, tax assessed value, days on Zillow, the **price cut Zillow shows**, the listing brokerage,
coordinates and photos. For sale, for rent and recently sold.

Built for **daily monitoring**: schedule the same search every morning and get **only the homes that are new**, plus
the ones **whose price changed since your last run**, with the previous price and the drop in dollars and percent. A
quiet day costs nothing.

### At a glance

- **Price per 1,000 homes:** US$ 2.00
- **Home page (optional):** US$ 3.00 per 1,000, on top: facts, price history, tax history, schools
- **Fee per run start:** None
- **Search by location (city, ZIP, neighborhood) or by Zillow URL:** Yes
- **For sale, for rent, recently sold:** Yes
- **Filters:** price, beds, baths, square feet, lot size, year built, home type, days on Zillow, keywords, price cuts
- **More than Zillow's 820 results per search:** Yes, split by price range automatically
- **Only new homes since the last run (`onlyNew`):** Yes, free when nothing is new
- **Price tracking between runs (`trackPriceChanges`, `onlyPriceDrops`):** Yes
- **Agent names and phone numbers:** Never (see below)
- **Error rows (bad URL, unknown place, no results):** Free, with an `errorCode`

### One real row

From a test run on 2026-10-06 (location "Austin, TX", for sale, newest first, home pages on), shortened:

```json
{
  "type": "property",
  "zpid": "331629599",
  "url": "https://www.zillow.com/homedetails/7910-Lennon-Dr-Austin-TX-78744/331629599_zpid/",
  "status": "forSale",
  "listingType": "For Sale by Agent",
  "price": 315000,
  "address": "7910 Lennon Dr, Austin, TX 78744",
  "city": "Austin",
  "state": "TX",
  "zipcode": "78744",
  "latitude": 30.155565,
  "longitude": -97.71584,
  "bedrooms": 2,
  "bathrooms": 3,
  "livingAreaSqft": 1471,
  "pricePerSqft": 214.14,
  "lotAreaSqft": 967.0,
  "homeType": "SINGLE_FAMILY",
  "yearBuilt": 2021,
  "taxAssessedValue": 354265,
  "daysOnZillow": 0,
  "listedAt": "2026-10-06T21:34:40Z",
  "brokerageName": "Compass RE Texas, LLC",
  "photoCount": 34,
  "hoaFeeMonthly": 115,
  "propertyTaxRate": 1.46,
  "mlsName": "Unlock MLS",
  "neighborhood": "Bluff Springs",
  "facts": {"bathroomsFull": 2, "bathroomsHalf": 1, "parkingCapacity": 2, "hasGarage": true, "hoaFeeTotal": "$115 monthly"},
  "highlights": ["Stainless steel appliances", "Spacious front porch", "Covered lower patio"],
  "hasDetails": true
}
```

A home with a price cut on Zillow carries it on every row, home page or not:
`"isPriceReduced": true, "priceReducedBy": 16000, "priceReducedAt": "2026-10-06", "priceReductionText": "$16,000 (Oct 6)"`.

### What you can do with it

- **Investors and flippers:** watch Austin, Miami or Phoenix every morning for new listings under a price per sqft,
  and catch every price drop on homes you already saw (`onlyNew` + `trackPriceChanges` + `onlyPriceDrops`).
- **Agents and brokerages:** follow new listings, price cuts and recent sales in your farm area, and see which
  brokerages list the most in each ZIP code.
- **Rental search and relocation:** a daily alert of new rentals in Seattle or New York that match budget and
  bedrooms, straight into Slack, e-mail or Google Sheets.
- **Comps and market research:** recently sold homes with sale date and price, Zestimate next to list price, days on
  market and price per sqft by ZIP code or neighborhood.
- **Datasets and AI:** clean, typed rows (numbers as numbers, dates as ISO) with coordinates, ready for maps and models.

### Input

| Field | What it does |
|---|---|
| `locations` | US cities, ZIP codes or neighborhoods (`Austin, TX`, `Miami, FL`, `10001`, `Williamsburg, Brooklyn`); one search each |
| `startUrls` | Zillow search URLs with your filters (every filter and drawn map area is kept), or home URLs (`/<zpid>_zpid/`, returned with the home page) |
| `listingType` | `forSale` (default), `forRent` or `sold` (recently sold) |
| `propertyTypes` | Any of `houses`, `townhomes`, `multiFamily`, `condos`, `apartments`, `manufactured`, `lots`; empty = all |
| `minPrice`, `maxPrice` | US dollars (monthly rent for rentals) |
| `minBeds`, `maxBeds`, `minBaths` | Bedrooms and bathrooms |
| `minSqft`, `maxSqft` | Living area in square feet |
| `minLotSqft`, `maxLotSqft` | Lot size in square feet (1 acre = 43,560) |
| `minYearBuilt`, `maxYearBuilt` | Year built |
| `daysOnZillow` | `any`, `1`, `7`, `14`, `30`, `90`, `6m`, `12m`, `24m`, `36m` (for sold: sold in the last N days) |
| `keywords` | Zillow's keyword filter (`pool`, `waterfront`, `ADU`) |
| `onlyPriceCuts` | For sale: only homes Zillow shows with a reduced price |
| `sortBy` | `newest` (default), `relevance`, `priceLowToHigh`, `priceHighToLow`, `bedrooms`, `bathrooms`, `squareFeet`, `lotSize` |
| `maxItems` | Homes per search, default 50. 0 = up to 10,000 |
| `includeDetails` | Also read each home's own page, charged as a separate event |
| `onlyNew` | Deliver only homes not delivered in earlier runs of the same search |
| `trackPriceChanges` | Add the price from the previous run and the change; with `onlyNew`, also deliver seen homes whose price changed |
| `onlyPriceDrops` | With `onlyNew` and `trackPriceChanges`: of the seen homes, only price drops |
| `proxyConfiguration` | Default Apify Proxy (datacenter) |

Example: new 3-bedroom houses in Austin up to $600,000, plus price drops, every morning:

```json
{
  "locations": ["Austin, TX"],
  "listingType": "forSale",
  "propertyTypes": ["houses"],
  "maxPrice": 600000,
  "minBeds": 3,
  "maxItems": 200,
  "onlyNew": true,
  "trackPriceChanges": true
}
```

Recently sold condos in Miami in the last 90 days, for comps:

```json
{
  "locations": ["Miami, FL"],
  "listingType": "sold",
  "propertyTypes": ["condos"],
  "daysOnZillow": "90",
  "maxItems": 500
}
```

Or paste the search from your browser:

```json
{
  "startUrls": ["https://www.zillow.com/seattle-wa/rentals/"],
  "maxItems": 100
}
```

### How daily monitoring works

The Actor remembers each search (same URL, or same location and filters) in a named key-value store in your own
account, `zillow-scraper-state`: zpid, last price, first and last time seen.

- **`onlyNew`:** the first run delivers up to `maxItems` and marks everything it read as seen. Later runs read the
  newest homes first and stop when they reach homes already seen. A day with nothing new delivers nothing and costs
  nothing.
- **`trackPriceChanges`:** every row gets `isNewListing`, `previousPrice`, `priceChange`, `priceChangePct`,
  `isPriceDrop`, `firstSeenAt` and `previousSeenAt`. `maxItems` then counts homes checked, so the cost of a daily run
  stays flat.
- **Both on:** you get new homes plus homes seen before whose price changed. Older homes that the first run never
  reached are recorded as a price baseline, not delivered as "new".
- Delete the key-value store to start over.

### Big searches (more than 820 homes)

Zillow shows at most 20 pages of 41 homes (820) for any search. When you ask for more than that and the search is
bigger, the Actor splits it into price ranges by itself (each range under 820) and reads them one after the other,
so a 5,000-home city can be read in full. Without a limit above 820, nothing is split.

### Output

Every home row: `zpid`, `url`, `status` (`forSale`, `forRent`, `sold`, `pending`, `comingSoon`), `listingType`
(Zillow's label, for example `For Sale by Agent`, `New Construction`, `Foreclosure`), `price`, `priceText`, `currency`,
`pricePeriod` (`month` for rentals), `address`, `street`, `unit`, `city`, `state`, `zipcode`, `latitude`,
`longitude`, `bedrooms`, `bathrooms`, `livingAreaSqft`, `pricePerSqft`, `lotAreaSqft`, `homeType`, `zestimate`,
`rentZestimate`, `taxAssessedValue`, `daysOnZillow`, `listedAt`, `soldPrice` and `dateSold` (sold homes),
`isPriceReduced`, `priceReducedBy`, `priceReducedAt`, `priceReductionText`, `brokerageName`, `builderName`,
`isOwnerListing`, `isNewConstruction`, `isForeclosure`, `isAuction`, `isComingSoon`, `isPending`, `hasOpenHouse`,
`openHouse`, `has3DTour`, `hasVideo`, `isFeatured`, `highlight` (the note Zillow shows on the card), `mainPhoto`,
`photos`, `photoCount`, `position`, `searchQuery`, `scrapedAt`.

Rental searches also return apartment buildings (`"type": "building"`, `isBuilding: true`) with `buildingName`,
`price` (lowest rent) and `priceMax`, `units` (rent from, by bedrooms) and `availableUnits`.

With price tracking: `isNewListing`, `previousPrice`, `priceChange`, `priceChangePct`, `isPriceDrop`, `firstSeenAt`,
`previousSeenAt`.

With home pages (`hasDetails: true`): `description`, `yearBuilt`, `hoaFeeMonthly`, `propertyTaxRate`, `zestimate`,
`rentZestimate`, `listedAt`, `lastSoldPrice`, `lastSoldDate`, `siteLastPriceChange`, `siteLastPriceChangeDate`,
`mlsName`, `mlsId`, `brokerageName`, `county`, `neighborhood`, `parcelId`, `facts` (heating, cooling, appliances,
flooring, parking, garage, basement, pool, view, roof, construction, utilities, pets, lease terms and more, as listed),
`factsAtAGlance`, `highlights`, full-size `photos`, `virtualTourUrl`, `pageViewCount`, `favoriteCount`, and
`priceHistory` (date, event, price, price per sqft, source), `taxHistory` (year, tax paid, assessed value) and
`schools` (name, rating, grades, distance, link), for homes for sale, sold and for rent. If Zillow does not send the
history part for a home, those three fields come as `null` and the rest of the page is still delivered. If a home
page cannot be read, the row still comes with `hasDetails: false` and `detailsError`, and only the home is charged.

**No agent contact data, by design.** For listings by an agent you get the brokerage (a company) and the MLS. The
listing agent's name, phone, e-mail, photo and license are never returned. For homes listed by the owner (FSBO, for
rent by owner) you get `isOwnerListing: true` and no brokerage, name or phone. Phone numbers and e-mail addresses
inside the description text are replaced with `[contact removed]`. Use the home `url` to contact the seller through
Zillow.

### Error codes (never charged)

| `errorCode` | Meaning |
|---|---|
| `INVALID_INPUT` | A value the Actor does not understand (minimum above maximum, unknown property type, a URL that is not a Zillow search or home) |
| `NOT_FOUND` | Zillow has no place with this name (the Actor tries other spellings first), or the home was removed |
| `NO_RESULTS` | No home for this search and filters |
| `BLOCKED` | Zillow's bot protection refused every attempt on new IPs; run again |
| `NOT_REACHED` | The run timeout arrived before this search or home |
| `TIMEOUT_TOO_SHORT` | The run timeout is too short to read even the first page; raise it |
| `UNEXPECTED` | A page came in a shape we did not expect; the rest of the run goes on |

### Pricing

| Event | Per 1,000 |
|---|---|
| Home delivered | US$ 2.00 |
| Home page (only with `includeDetails` or home URLs) | US$ 3.00 |

A daily `onlyNew` run on a busy Austin search that finds 80 new homes costs US$ 0.16; with home pages, US$ 0.40.
Error rows, duplicates, homes already seen and homes with an unchanged price are free, and there is no start fee.

### Limitations

- Zillow sits behind a bot protection. The Actor retries refused requests on its own and never solves captchas.
  On a bad day a search or a home page may
  come back as `BLOCKED` or `hasDetails: false` (free): run it again.
- "New York" means New York City; for the whole state write "New York State" or "NY". An ambiguous name (for example
  "Springfield") is resolved the way Zillow resolves it; add the state to be sure.
- A rental search mixes single homes and whole apartment buildings, as Zillow does.
- This Actor reads public pages only.

### FAQ

**Do I need a Zillow account or a US IP?** No. No login, no cookies, and the default datacenter proxy works.

**Can I paste a search from my browser?** Yes. Price, beds, baths, home type, sort, keywords, the drawn map area and
every other filter in the URL are kept.

**What is the difference between `isPriceReduced` and `isPriceDrop`?** `isPriceReduced` is the cut Zillow itself
shows on the listing. `isPriceDrop` compares the price with your own previous run (needs `trackPriceChanges`).

**How do I get an alert only when a price drops?** Turn on `onlyNew`, `trackPriceChanges` and `onlyPriceDrops`,
schedule the Task daily and send the dataset to your integration.

**Can I use it from n8n, Make, Zapier or an AI agent?** Yes, through the Apify app or the Apify MCP server. Error
rows are free, so an agent can explore cheaply.

**What if a run is cut by its timeout?** The Actor stops shortly before the limit and ends successfully with what it
delivered, telling you in the status message how to get the rest.

### Changelog

- **0.1 (2026-10-07):** first version. Search by Zillow URL or by location (city, ZIP, neighborhood, any spelling)
  for sale, for rent or recently sold, with price, beds, baths, square feet, lot size, year built, home type, days on
  Zillow, keywords and price-cut filters; automatic split of searches above 820 homes; Zillow's own price cuts on
  every row; optional home pages; `onlyNew` and price tracking between runs for daily schedules; free error rows.

# Actor input Schema

## `locations` (type: `array`):

US cities, ZIP codes or neighborhoods, one per line (for example Austin, TX or Miami, FL or 10001 or Williamsburg, Brooklyn). Any spelling works: 'austin tx', 'AUSTIN, TX' and 'Austin Texas' all find Austin. 'New York' means New York City; write 'New York State' for the whole state. Each location is a separate search with the filters below, and every row keeps its location. With locations and URLs empty, the run searches Austin, TX as an example. Also accepts 'location', 'searchTerms', 'cities' or 'zipcodes'.

## `startUrls` (type: `array`):

Search URLs copied from your browser after setting the filters on Zillow (for example https://www.zillow.com/seattle-wa/rentals/ or any URL with searchQueryState, including a drawn map area), one per line. Every filter in the URL is kept, so the filters below are not needed. Home URLs (with /<zpid>\_zpid/) also work and come back with the full home page, charged as a home plus a home page. Leave empty to search by location. Also accepts 'searchUrls', 'urls' or 'propertyUrls'.

## `listingType` (type: `string`):

For sale (default), For rent, or Recently sold. Sets which Zillow search runs for each location; prices are the asking price, the monthly rent or the sold price. Also accepts 'status' or 'type'.

## `propertyTypes` (type: `array`):

Only these property types: Houses, Townhomes, Multi-family, Condos / co-ops, Apartments, Manufactured, Lots / land. Pick one or more; leave empty for every type. Also accepts 'homeTypes' or 'propertyType'.

## `minPrice` (type: `integer`):

Only homes at or above this price in US dollars (for example 300000); for rentals, the monthly rent (for example 1500). Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Only homes at or below this price in US dollars (for example 750000); for rentals, the monthly rent. Leave empty for no maximum. With a narrow price range, large markets fit under Zillow's per-search cap.

## `minBeds` (type: `integer`):

Minimum number of bedrooms (for example 3). Leave empty for any.

## `maxBeds` (type: `integer`):

Maximum number of bedrooms (for example 4). Leave empty for any.

## `minBaths` (type: `number`):

Minimum number of bathrooms: 1, 1.5, 2, 3 or 4, as in Zillow's own filter. Leave empty for any.

## `minSqft` (type: `integer`):

Minimum living area in square feet (for example 1500). Leave empty for any.

## `maxSqft` (type: `integer`):

Maximum living area in square feet (for example 3000). Leave empty for any.

## `minLotSqft` (type: `integer`):

Minimum lot size in square feet (1 acre = 43,560 sqft, so 21780 is half an acre). Leave empty for any.

## `maxLotSqft` (type: `integer`):

Maximum lot size in square feet (for example 43560 for one acre). Leave empty for any.

## `minYearBuilt` (type: `integer`):

Only homes built in this year or later (for example 2000). Leave empty for any.

## `maxYearBuilt` (type: `integer`):

Only homes built in this year or earlier (for example 1950 for older homes). Leave empty for any.

## `daysOnZillow` (type: `string`):

Only homes listed in the last 1, 7, 14, 30 or 90 days, or 6 to 36 months. For Recently sold it means sold in that period, the usual filter for comps. Any (default) applies no date filter. Also accepts 'soldInLast'.

## `keywords` (type: `string`):

Words that must appear in the listing, as in Zillow's own keyword filter (for example pool, waterfront or ADU). Leave empty for no keyword filter.

## `onlyPriceCuts` (type: `boolean`):

For sale only: keeps homes whose price Zillow shows as reduced, a common list for investors and agents. Every row also carries the cut (priceReducedBy, priceReducedAt) whenever Zillow has one, with this off too. Off by default. Also accepts 'onlyPriceReductions'.

## `sortBy` (type: `string`):

Zillow's own orders: Newest (default), Relevance, Price low to high, Price high to low, Bedrooms, Bathrooms, Square feet or Lot size. With a limit it also decides which homes you get. Newest first is the right choice for daily monitoring. Also accepts 'sort'.

## `maxItems` (type: `integer`):

Stop each search (each URL or each location) after this many homes (default 50). Zillow shows 41 homes per page and at most 820 per search; above that the Actor splits the search by price range by itself. 0 means up to 10,000. You pay per home delivered. Also accepts 'maxItemsPerSearch', 'maxResults' or 'limit'.

## `includeDetails` (type: `boolean`):

Also opens each home's own Zillow page: description, year built, HOA fee, property tax rate, facts and features (heating, cooling, parking, appliances, flooring...), highlights, full-size photos, MLS name and id, brokerage, page views and saves, price history, tax history and nearby schools. One extra request per home, charged as a separate 'Home page' event, and a slower run. Off by default. Also accepts 'includeDetail'.

## `onlyNew` (type: `boolean`):

For scheduled runs. Remembers which homes each search (with its filters) already returned, in a named key-value store in your account ('zillow-scraper-state'), and delivers only homes not seen before. The first run delivers up to the limit and marks everything it read as seen. Seen homes are not delivered and not charged. Forces the newest-first order. Delete the store to start over. Also accepts 'onlyNewListings'.

## `trackPriceChanges` (type: `boolean`):

Compares each home's price with the price seen in your previous runs of the same search (same key-value store) and adds previousPrice, priceChange, priceChangePct, isPriceDrop, isNewListing and firstSeenAt to every row. The first run only records prices. Together with 'Only new homes' you get new homes plus homes whose price changed; the limit then counts homes checked, so a daily run keeps the same cost. Also accepts 'compareWithPreviousRun'.

## `onlyPriceDrops` (type: `boolean`):

Needs 'Only new homes' and 'Track price changes' both on (otherwise the run stops with a free INVALID_INPUT row). Of the homes seen before, delivers only those whose price went down, plus new homes. Price increases are skipped and not charged.

## `proxyConfiguration` (type: `object`):

The default Apify Proxy (datacenter) works. If it keeps being refused, search pages move to the residential group by itself when your account has it. Keep the default.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "listingType": "forSale",
  "daysOnZillow": "any",
  "onlyPriceCuts": false,
  "sortBy": "newest",
  "maxItems": 50,
  "includeDetails": false,
  "onlyNew": false,
  "trackPriceChanges": false,
  "onlyPriceDrops": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Austin, TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/zillow-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "locations": ["Austin, TX"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/zillow-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Austin, TX"
  ]
}' |
apify call scrapewise/zillow-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/zillow-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/SgZVDLOvw8FyMHVWL/builds/bRWp5yWfEJq6PEKbw/openapi.json
