
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Extract public Zillow homes for sale and rent from a city, ZIP, or search URL. Returns price, address, beds, baths, Zestimate, photos, and the listing link.
Turn any Zillow search into a spreadsheet of listings. Paste a city page, a ZIP page, or a search link from the Zillow address bar and get every home for sale or for rent with price, address, beds and baths, Zestimate, photos, and the listing URL. No login, and just $1.40 per 1,000 listings.
Set your filters on Zillow, copy the link, and export the results as JSON, CSV, or Excel.
| Field | Type | Description |
|---|---|---|
searchUrls | array | City, ZIP, or search URLs. A link with searchQueryState uses that map and those filters as-is. |
resultsLimit | integer | Maximum listings per search URL. Default 10. |
extractionMethod | string | PAGINATION_WITH_ZOOM_IN (default), PAGINATION, or MAP_MARKERS. |
proxyConfiguration | object | Proxy settings. Datacenter is the default. |
Extraction methods:
{
"searchUrls": [
{ "url": "https://www.zillow.com/greenville-sc/" }
],
"resultsLimit": 10,
"extractionMethod": "PAGINATION_WITH_ZOOM_IN",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
One dataset row per listing.
| Field | Description |
|---|---|
zpid, propertyUrl | Zillow property id and listing link. |
address, listingAddress, coordinates | Flat address, address parts, and latitude and longitude. |
listingPrice | Amount, currency, and formatted price. |
listingStatus, homeType | For sale or for rent, and the home type. |
bedrooms, bathrooms, livingArea | Beds, baths, and living area. |
zestimate, rentZestimate, taxAssessedValue | Zillow estimates when the card has them. |
mainImage, listingPhotos, photoCount | Cover photo and gallery. |
daysOnZillow, availabilityDate | Listing age and availability for rentals. |
factsAndFeatures | Extra flags such as fireplace, pool, and air conditioning. |
A trimmed item from a real run (a rental in San Francisco):
{
"zpid": "15079329",
"address": "423 Waller St APT 6, San Francisco, CA 94117",
"listingPrice": { "currency": "USD", "amount": 5195, "formatted": "$5,195/mo" },
"listingAddress": {
"street": "423 Waller St APT 6",
"unit": "Apt 6",
"city": "San Francisco",
"state": "CA",
"zipCode": "94117",
"country": "USA"
},
"coordinates": { "latitude": 37.77085, "longitude": -122.43073 },
"listingStatus": "forRent",
"homeType": "APARTMENT",
"bedrooms": 2,
"bathrooms": 1,
"livingArea": 778,
"livingAreaUnit": "sqft",
"zestimate": 875800,
"rentZestimate": 5194,
"propertyUrl": "https://www.zillow.com/homedetails/423-Waller-St-APT-6-San-Francisco-CA-94117/15079329_zpid/",
"mainImage": "https://photos.zillowstatic.com/fp/afcf38b20fa93de979bf9898a25411ab-p_e.jpg",
"availabilityDate": "2026-10-16 00:00:00"
}
Map pins often have a cover photo and an empty photo list, because the pin payload does not include the gallery.
You pay $0.0014 per listing saved, which is $1.40 per 1,000 listings. Platform usage (compute and proxy) is billed on top at the usual rates: compute is $0.30 per compute unit and datacenter traffic is $1 per GB.
Worked example: a 10-listing search costs 10 x $0.0014 = $0.014 in event fees. A measured 10-listing datacenter run used about $0.0022 of platform usage, about $0.016 in total. An empty search saves nothing and adds no listing fee.
Public Zillow search pages for homes for sale and for rent. Paste the URL after you set filters on Zillow. Property detail pages are not search results; use a search or city URL.
It reads public search pages. You are responsible for how you use the data and for following Zillow's terms and the laws that apply to you.
The run continues. That URL is logged and skipped, and other URLs in the same run are still scraped.
Up to the result limit you set. Zoom-in keeps splitting a dense map until the limit is met or the map is small. Plain pagination stops at the pages Zillow shows.
Zillow changes which fields appear on a card. Missing values are left off the row.
No account is needed. You can schedule runs and call the actor through the API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchUrlsarrayRequiredSearch URLs
Zillow city, ZIP, or search URLs. A search URL can include searchQueryState from the address bar. City and ZIP pages such as greenville-sc or 29617 work too.
resultsLimitintegerOptionaldefault 10Results per search
Maximum listings to return for each search URL.
extractionMethodenumOptionaldefault "PAGINATION_WITH_ZOOM_IN"Extraction method
How to walk the search. Zoom-in covers dense areas. Pagination stays on the pages Zillow shows. Map markers reads the pins currently on the map.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach Zillow. Datacenter is the usual choice.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| zpid | string | number | null | Zillow property ID |
| address | string | null | Full listing address |
| listingPrice | object | null | Price, currency, and display text |
| listingAddress | object | null | Street, unit, city, state, and ZIP |
| listingStatus | string | null | forSale, forRent, sold, pending, or another status |
| homeType | string | null | Home type such as SINGLE_FAMILY or CONDO |
| bedrooms | number | null | Bedrooms |
| bathrooms | number | null | Bathrooms |
| livingArea | number | null | Living area |
| daysOnZillow | number | null | Days on Zillow |
| zestimate | number | null | Zestimate |
| rentZestimate | number | null | Rent Zestimate |
| propertyUrl | string | null | Listing page |
| mainImage | string | null | Primary photo |
| broker | object | null | Listing broker |
| coordinates | object | null | Latitude and longitude |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One listing saved from a Zillow search. | $0.0014 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/zillow-search-scraper').call({
"searchUrls": [
{
"url": "https://www.zillow.com/greenville-sc/"
}
],
"resultsLimit": 10,
"extractionMethod": "PAGINATION_WITH_ZOOM_IN",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/zillow-search-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/zillow-search-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Listings from a Zillow search URL.
Rental listings from a search URL.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.