Crexi Commercial Real Estate Scraper avatar

Crexi Commercial Real Estate Scraper

Pricing

from $0.63 / 1,000 listings

Go to Apify Store
Crexi Commercial Real Estate Scraper

Crexi Commercial Real Estate Scraper

Scrape Crexi commercial real estate for sale and for lease: price, size, property type, address and status. Optional: full listing details, brokers with licenses, the property owner, and the cap rate, NOI and occupancy Crexi hides. Export to JSON, CSV or Excel.

Pricing

from $0.63 / 1,000 listings

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 hours ago

Last modified

Share

🏢 What is Crexi Commercial Real Estate Scraper?

Crexi Commercial Real Estate Scraper extracts commercial property listings from Crexi, for sale and for lease: asking price, size, property type, status and address, for any US location, keyword or Crexi search URL. Tick the optional add-ons for the full listing page (zoning, year built, photos), every listing broker with their license, the e-mail each brokerage publishes on its own website, the property owner and parcel number (APN), and the cap rate, NOI, occupancy and tenancy that Crexi hides.

Type a location (Austin, TX, Florida, 78701) or paste any Crexi search URL, click Start, and download the listings in JSON, CSV or Excel. No login, nothing to set up: 20 Pittsburgh listings with every add-on on — details, owner, recovered cap rates — in 2 minutes; search results alone: 2,000 Texas retail listings in 9 seconds. The cap rate, occupancy, tenancy and lease type that Crexi shows as ***** to visitors without an account are recovered, exact, without any account.

📋 What data can you extract from Crexi?

One item per listing, 95 fields:

CategoryWhat you get
🏷️ Listingtitle, tagline, link, Crexi id, sale or lease, status (on market, auction, call for offers, under contract) — City Collision · Corporate Guarantee · 8.00% cap rate
💰 Price and returnsasking price, price per square foot, per acre and per unit, cap rate, NOI, occupancy, tenancy, lease type — $3,835,752 · 8% cap · $306,860 NOI · 100 % occupied
🏗️ Propertyproperty type and subtypes, investment type, building class, building size, lot size, buildings, stories, units, year built, zoning, parcel number (APN)
👤 Ownercurrent owner and past owners of the building, property history events (listed, sold), county record link
📍 Locationstreet address, city, county, state, ZIP, neighborhood, GPS coordinates, Opportunity Zone
🧑‍💼 Brokersevery listing broker: name, license numbers and states, brokerage, brokerage website and office address, Crexi profile; broker of record, auctioneer
📧 Brokerage e-mail (option)the e-mail each listing brokerage publishes on its own website, and the page it was found on — info@brokerage.com
🔑 Lease listingsrent per square foot per year, available space from / to, every available space with its size, rent, use and status
📝 Text and mediafull description, investment highlights, every property fact shown by Crexi, all photos in full size, OM / flyer / video / tour flags
🕒 Datesactivation date, last update, creation, days on market, offer deadline, offer terms (earnest deposit, escrow period)

Every field, with an example, is listed in the Output section below.

Fields filled from the listing page — description, highlights, facts, building class, brokers, photos, owner — need Extract details, which is off by default: a run reads the search-card fields only, much faster, until you tick it (brokers and the property record need it too).

✅ Why use Crexi Commercial Real Estate Scraper?

  • 🔓 The numbers Crexi hides, recovered: cap rate (to 0.01 %), occupancy, tenancy and lease type are shown as ***** to anonymous visitors. The Actor gives you the exact values, and computes the NOI from the price and the cap rate — no account needed. On a Pittsburgh test, all 20 cap rates were found, and each one written in a listing title matched to the hundredth.
  • 👤 The property owner and the parcel number: the owner of the building (often an LLC), past owners, APN and year built, from Crexi's own property record.
  • 🧑‍💼 Brokers with licenses: every listing broker with license numbers and states, brokerage website and office address — ready for outreach. Optionally, the e-mail each brokerage publishes on its own website, each site read once per run.
  • 🗺️ No 1,500-result cap: a large search (a whole state, the whole US) is split automatically and read to the end.
  • 🏬 For sale and for lease in one Actor: lease listings come with their available spaces and rents.
  • 🗂️ Several searches in one run: keywords × locations × sale / lease, with a cap per search.
  • 🔔 Monitoring built in: tick Only new listings, schedule the Actor, and each run returns (and charges) only what it has never delivered before.
  • 🔌 API, scheduling, integrations (Make, Zapier, n8n, Google Sheets…) and JSON / CSV / Excel export via the Apify platform.

🚀 How to scrape Crexi

  1. Create a free Apify account.
  2. Open Crexi Commercial Real Estate Scraper and type a Location (e.g. Austin, TX), and optionally a Search keyword (e.g. dollar general) and Property types.
  3. Or paste your own Crexi URLs into Start URLs: any search results page (for sale or for lease, the filters set on the site are kept) or single listing pages.
  4. Set the filters you need (price, cap rate, size, occupancy…) and Max listings (100 by default, 0 = no limit), then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape Crexi?

This Actor uses pay per event pricing — see the Pricing tab. Each option is charged on top of the listing, only when you tick it and only on the listings where it gave you something (brokers, the property record and the brokerage e-mails also bill each page they read, found or not, at a small price):

What you pay forEventPrice per 1,000
Listing: the search-card fields (price, size, type, address, dates, brokerage)apify-default-dataset-item$0.89 ($0.81 Bronze, $0.72 Silver, $0.63 Gold)
Extract details: the listing page read (description, every field, class, broker of record, photos)listing-details$0.65 ($0.55 Bronze, $0.45 Silver, $0.44 Gold)
Include brokers: a listing that got at least one broker (name, licenses, brokerage, profile)listing-brokersnot charged: you only pay the brokers page read below
Include brokers: each brokers page read, whether it names a broker or notbroker-page-read$0.39 ($0.38 Bronze, $0.37 Silver, $0.36 Gold)
Find brokerage e-mails: a listing that got at least one brokerage e-mail — none found, no charge for this lineagency-email$1.39 ($1.38 Bronze, $1.37 Silver, $1.36 Gold)
Find brokerage e-mails: each page of a brokerage website read (a site is read once per run, whatever the number of its listings), whether it shows an e-mail or notagency-site-page-read$0.058 ($0.048 Bronze, $0.038 Silver, $0.028 Gold)
Include property record: a listing whose county record names the owner — no owner, no charge for this lineproperty-owner$4.99 ($4.98 Bronze, $4.97 Silver, $4.96 Gold)
Include property record: each page read (the lookup, then the record), whether it names an owner or notowner-record-page-read$5.99 ($5.985 Bronze, $5.98 Silver, $5.975 Gold)
Recover hidden financials: a sale listing that got at least one hidden cap rate, occupancy, tenancy or lease type back — nothing recovered, no chargefinancials-recovered$7.20 ($7.19 Bronze, $7.01 Silver, $7.00 Gold)
A listing dropped by one of the Actor's own filtersfilter-check$0.34 ($0.33 Bronze, $0.32 Silver, $0.31 Gold)
A listing page read, then dropped by a filter that needs itdetail-filter-check$0.744 ($0.734 Bronze, $0.724 Silver, $0.714 Gold)
Run startapify-actor-start$0.01 per run (at the default 512 MB)

Example: 1,000 sale listings with every option except the brokers ≈ $18.48 (about half of them get an owner, about 1.6 record pages are read per listing, about two in three get hidden financials back); the search-card fields alone: $0.90. A listing you keep never costs a filter fee. Platform usage (compute, proxy) is included in the price.

⚙️ Input

{
"location": "Austin, TX",
"propertyTypes": ["Retail"],
"minCapRate": 6.5,
"maxItems": 200
}

Several searches, lease listings, a cap per search, only the listings not delivered before:

{
"listingType": "both",
"searchQueries": ["dollar general", "walgreens"],
"locations": ["TX", "Florida"],
"maxItemsPerQuery": 50,
"sortBy": "newest",
"onlyNew": true,
"stateKey": "nnn-south"
}

Or with your own URLs or listing ids:

{
"startUrls": [
{ "url": "https://www.crexi.com/properties?types%5B%5D=Industrial&states%5B%5D=GA" },
{ "url": "https://www.crexi.com/properties/2492041/pennsylvania-former-pittsburgh-hospital" }
],
"listingIds": ["2332534"],
"maxItems": 500
}
FieldNotes
location, locationsA state (TX, Texas), a city with its state (Austin, TX), a county (Travis County, TX, Orleans Parish, LA) or a ZIP code (78701, also read at the end of an address: Austin, TX 78701) (St. / Saint, Ft. / Fort, Mt. / Mount: either spelling); locations adds more places. Every keyword is searched in every location (max 500 searches per run). Empty = the whole US.
query, searchQueriesFree-text search as typed in the Crexi search box (a tenant, a brand, an address); searchQueries adds more keywords.
listingTypesale (default, auctions included), lease, or both.
startUrls, listingIdsCrexi search pages (sale or lease, their filters kept) or listing pages; listing ids are read as listingType says. The search fields are then ignored.
states, propertyTypes, propertySubtypesAdded to every search.
sortByrelevance, newest, updated, priceHigh, priceLow, capRateHigh.
maxItems, maxItemsPerQueryCap for the whole run and for each search (0 = unlimited).
extractDetails, includeBrokers, includePropertyRecord, unmaskFinancials, enrichEmails, includeGalleryWhat is read for each listing: listing page, brokers, owner record, hidden financials, brokerage e-mails (all five off by default, you tick what you need; brokers and the owner record need the listing page, the brokerage e-mails need the brokers), all photos (on).
minPrice, maxPrice, minCapRate, maxCapRate, minPricePerSqft, maxPricePerSqft, minOccupancy, maxOccupancySale listings, applied by Crexi itself before anything is read; bounds included. A price range gives priced listings only (includeUnpriced then has no effect).
minSqft, maxSqft, minLotAcres, maxLotAcresBuilding size (or available space for a lease), lot size in acres.
buildingClasses, investmentTypes, tenancy, leaseTypes, minRemainingTerm, maxRemainingTerm, statuses, opportunityZoneOnly, includeUnpricedMore filters of the Crexi search.
minLeaseRate, maxLeaseRateLease listings: rent per square foot per year.
minYearBuilt, maxYearBuiltSale listings only, read in the property record: needs includePropertyRecord and extractDetails (refused without them, and with lease listings: Crexi never gives their year); a listing without a known year is dropped.
postedAfter, postedBeforeActivation date range: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month, 24 hours).
excludeKeywordsDrop the listings whose title or tagline contains one of these words (case and accents ignored).
onlyNew, stateKey, resetStateMonitoring: only the listings never delivered under this memory key; resetState forgets the memory.
AdvancedproxyConfiguration (Apify proxy by default, included in the price; the residential, Google SERP and Unblocker proxies are not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

One real item (Pittsburgh, 25/09/2026), shortened: long texts cut, one broker, one photo.

{
"id": "2332534",
"crexiId": 2332534,
"listingType": "sale",
"url": "https://www.crexi.com/properties/2332534/pennsylvania-city-collision-corporate-guarantee-750-cap-rate",
"title": "City Collision | Corporate Guarantee | 8.00% cap rate",
"subtitle": "Investment-Grade | Private-Equity-Backed Net Lease in Pittsburgh’s Strip District",
"status": "On-Market",
"isAuction": false,
"propertyType": "Retail",
"propertyTypes": ["Retail"],
"propertySubtypes": ["Auto Shop"],
"investmentType": "Net Lease",
"askingPrice": 3835752,
"currency": "USD",
"isUnpriced": false,
"pricePerSqft": 399.56,
"capRate": 8,
"capRateSource": "recovered",
"netOperatingIncome": 306860,
"occupancy": 100,
"tenancy": "Single",
"squareFootage": 9600,
"lotSizeSqft": 7200,
"buildings": 1,
"yearBuilt": 1991,
"zoning": "Industrial Mixed-Use Subdistrict",
"apn": "0025G00205000000",
"address": "2950 Penn Ave",
"city": "Pittsburgh",
"county": "Allegheny County",
"state": "PA",
"postalCode": "15201",
"latitude": 40.45870353815599,
"longitude": -79.97299392283915,
"neighborhood": "PITTSBURGH URBAN",
"publishedAt": "2026-01-28T13:39:29.602Z",
"daysOnMarket": 240,
"description": "2950 PENN AVE - Pittsburgh, PA 15201 Discover an exceptional investment opportunity in Downtown Pittsburgh…",
"hiddenFields": ["Investment Type", "Lease Type", "Tenancy", "Cap Rate", "Occupancy", "NOI", "Year Built", "APN"],
"images": ["https://crexi.com/images/format=auto,width=3000,height=2000/assets/2332534/a287270d74d340ff99adb0eb6147ad84.JPG"],
"hasOfferingMemorandum": true,
"brokerageName": "Matthews",
"brokerName": "Beryl Grant",
"brokerLicense": "TN 356957",
"brokerProfileUrl": "https://www.crexi.com/profile/berylgr",
"brokerageWebsite": "https://www.matthews.com",
"brokers": [
{
"name": "Beryl Grant",
"publicProfileId": "berylgr",
"licenses": [{ "number": "TN 356957", "state": null, "type": null }],
"brokerage": { "name": "Matthews", "website": "https://www.matthews.com", "city": "El Segundo", "state": "CA" }
}
],
"brokerOfRecordName": "Kyle Matthews",
"owner": "KEY WEST HOLDINGS LLC",
"previousOwners": [],
"propertyHistory": [{ "event": "Sold", "date": null }],
"propertyRecordId": "f397f0b9f8e0a15e2d7d9bb626ec5290d396dee7",
"relatedListingIds": [],
"spaces": [],
"scrapedAt": "2026-09-25T22:30:21.097Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel.

All 95 fields

FieldsWhat you get
id, crexiId, listingType, url, title, subtitle, status, isAuctionListing: 2332534, sale or lease, On-Market / Auction / Call For Offers / Under Contract
propertyType, propertyTypes, propertySubtypes, investmentType, buildingClassProperty: Retail, Auto Shop, Net Lease, class A / B / C
askingPrice, currency, isUnpriced, pricePerSqft, pricePerAcre, pricePerUnitPrice: 3835752, USD, 399.56
capRate, capRateSource, netOperatingIncome, occupancy, tenancy, leaseTypeReturns: 8, recovered (or crexi, title), 306860, 100, Single, NNN
squareFootage, lotSizeAcres, lotSizeSqft, buildings, stories, units, yearBuilt, zoning, apn, ownership, groundLeaseBuilding and lot: 9600, 7200, 1991, 0025G00205000000, Fee Simple
address, city, county, state, stateName, postalCode, fullAddress, latitude, longitude, neighborhood, isInOpportunityZoneLocation: 2950 Penn Ave, Pittsburgh, PA, 15201
publishedAt, updatedAt, createdAt, daysOnMarket, offersDueAtDates (ISO): activation, last update, creation, days on market, offer deadline
description, highlights, details, hiddenFieldsText: description and highlights as plain text, every fact shown by Crexi (a hidden one is null and named in hiddenFields)
imageUrl, imageCount, images, hasVideo, hasVirtualTour, hasOfferingMemorandum, hasFlyerMedia: main photo, all photos in full size, flags
brokerageName, brokerageLogoUrl, brokerName, brokerLicense, brokerProfileUrl, brokerageWebsite, brokerageAddress, brokerageEmail, brokerageEmailSource, brokersBrokers: first broker flattened for a spreadsheet (with enrichEmails, the e-mail found on the brokerage website and its page), and every broker with licenses and brokerage
brokerOfRecordName, brokerOfRecordLicense, brokerOfRecordBrokerage, auctioneer, offerTermsOffer: supervising broker, auctioneer, earnest deposit, escrow and due diligence periods
owner, previousOwners, propertyHistory, propertyRecordId, propertyRecordUrl, relatedListingIdsOwner record: KEY WEST HOLDINGS LLC, history events, the same building's other Crexi listings
rentableSqftMin, rentableSqftMax, leaseRateMin, leaseRateMax, leaseRateText, rateType, numberOfSpaces, spaces, isSingleTenantLease: 1360, 3200, 23.5 USD per SF per year, $23.50/SF/YR, each available space
searchUrl, scrapedAtthe search it was found by, ISO timestamp

💡 Tips

How to get more results

Leave Location empty or type a state: a search over 1,500 results is split automatically and read to the end. Set maxItems to 0 for everything. Leave extractDetails and unmaskFinancials unticked (their default) when the search-card fields are enough (price, size, type, address, dates): 2,000 listings are then read in about 10 seconds.

How to reduce costs

The price is per listing, plus each option you tick, so the levers are maxItems, maxItemsPerQuery, the filters (Crexi applies most of them before anything is read), onlyNew for recurring runs (you never pay twice for the same listing) and the options: extractDetails, includeBrokers, includePropertyRecord, unmaskFinancials and enrichEmails are all unticked by default, tick only what you need.

Recovered cap rates

Crexi hides the cap rate, occupancy, tenancy and lease type of most listings from visitors without an account. With unmaskFinancials ticked (off by default), the Actor recovers the exact values anyway — the cap rate to 0.01 % — and capRateSource then says recovered. A cap rate that Crexi shows is crexi; one only written in the listing title is title. netOperatingIncome is the asking price × the cap rate. Sale listings only; a listing is charged financials-recovered only if at least one of these values was recovered for it. It takes time: 2,000 Texas retail listings with 257 cap rates found took under 10 minutes, against 9 seconds without it.

Several searches in one run

Fill searchQueries and / or locations: the Actor runs one search per keyword × location (× sale and lease with listingType: "both"), up to 500 searches per run. The single query and location fields still work and are added to the lists. A listing found by several searches is saved — and charged — once. Set maxItemsPerQuery to give every search its own cap: without it the first searches can use up the whole maxItems budget. You can also paste several search URLs into startUrls: each one is a search of its own, with the same cap. If your filters match almost nothing in one search (300 listings in a row dropped), that search stops and the run goes on with the next ones; the run stops only when every search is in that case.

Monitoring: only the new listings

Tick Only new listings (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the listings already delivered: they are not saved, not charged, and their page is not even opened. The memory lives in a named key-value store of your account (crexi-listings-scraper-seen, up to 150,000 listings per key) and is only updated with listings that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's listings), and tick resetState once to start over. With the default sort (relevance) or newest, searches are then read newest first, and a search stops once it meets 100 listings in a row you already have; another sort keeps its order and reads the search to the end, skipping (and not charging) what you already have. A listing your filters drop is checked (and charged the filter check) once: the next runs with the same filters skip it for free; change a filter, or tick resetState, to check them again.

Filter by activation date

postedAfter and postedBefore take a date (2026-09-01, the whole day in UTC is included, like every date of the results) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). Crexi filters on the date the listing went live (publishedAt); the Actor checks it again on every listing. Filtered-out listings are not saved and do not count in maxItems.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one item per Crexi commercial real estate listing. Actor id: nice_dev/crexi-listings-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/crexi-listings-scraper.

Smallest input, for a cheap first call:

{
"location": "Austin, TX",
"maxItems": 10
}

Key output fields: url, title, askingPrice, capRate, netOperatingIncome, propertyType, city, state, owner, brokerName.

Cost: see the pricing section above and the Pricing tab. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what Crexi shows publicly to any anonymous visitor. It logs in to nothing and solves no captcha. Results contain the names and license numbers of real estate brokers and the names of property owners (often companies), which can be personal data protected by laws such as the CCPA or the GDPR: do not store it without a legitimate reason. Photos stay on Crexi: the Actor gives their links only. You are responsible for using the data in compliance with Crexi's Terms of Use and applicable law. This Actor is not affiliated with Crexi.

Where do the brokerage e-mails come from?

With Find brokerage e-mails (enrichEmails) ticked, the Actor opens the website each brokerage gives on Crexi and returns the business e-mail address published there — what any visitor of that site sees, most often a general mailbox. It does not guess addresses, logs in nowhere and returns nothing a site keeps behind a login or a contact form. Some of these addresses name a person and are personal data under laws such as the CCPA or the GDPR: you are responsible for having a lawful reason before using them, for telling the people concerned where you got them and for honouring opt-outs; the rules for business e-mail outreach differ by country (CAN-SPAM in the US).

Does it need a login or a proxy?

No login and no Crexi account. The proxy is included in the price: leave the default setting (the residential, Google SERP and Unblocker proxies are not available). A request Crexi turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).

Why are some fields empty?

Crexi hides some facts from visitors without an account: the Actor recovers the cap rate, occupancy, tenancy and lease type, and reads the year built and the parcel number in the property record. What stays hidden (NOI written by the broker, number of units, rent bumps, lease term…) is null, and its label is listed in hiddenFields. Brokers' own phone numbers and e-mails, and the offering memorandum, are only shown to logged-in users: the Actor does not return them (tick Find brokerage e-mails for the e-mail each brokerage publishes on its own website). A brokerage site that shows no e-mail, or turns visitors away (some large networks do), leaves brokerageEmail empty.

Is the data safe to open in Excel or to show on a web page?

Titles and descriptions are the brokers' own words, copied as they are. A text can begin with -, +, = or @: Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. On a web page, escape every field like any text written by a stranger.

Known limitations

  • Crexi serves 1,500 results per search: larger searches are split by activation date, and a listing without an activation date (about 1 in 4,000) can be missed.
  • A pasted search URL keeps its own filters; a map area drawn on the site cannot be read (use Location instead): the log says when a parameter is ignored.
  • onlyNew remembers listing ids, not their content: a listing whose price changed is not returned again.
  • With onlyNew, a listing that does not pass a time-dependent filter yet (a relative "posted before" date) is checked again on the next run.
  • Two runs sharing the same stateKey at the same time may both return the same new listing.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options). Measured on Apify: about 10 listings a minute with every option (the owner record and the hidden financials), about 50 with the listing page alone — the default hour holds about 600 listings with every option.

A run the platform stops without warning (out of memory)

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the listings already saved are skipped: none is delivered or charged twice, and maxItems still counts them.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the listings it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the listings of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the listings saved, filtered out and no longer on Crexi (removed while the run was reading them), and the requests that failed after every retry. Those requests and the removed listings are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause.

If Crexi changes its data, you are told instead of paying for blank rows. A results page that counts listings but gives none the Actor can read is an error (listed in FAILED_REQUESTS), never a quiet "No listings found". If the first 20 listings read all lack their title, activation date, property type, status, address (state and map position) or photo, the run saves nothing more, stops and fails, and its last message names the missing field: at most those first listings are charged. A run of fewer listings (a scheduled onlyNew run that finds a few new ones, a small Max listings) is checked at its end, from 5 listings: its listings are already saved, and the run fails with the missing field instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.