SpotHero Scraper avatar

SpotHero Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
SpotHero Scraper

SpotHero Scraper

Scrape SpotHero - the parking spot marketplace. Browse city parking overviews, search venues/addresses/businesses by name, and get per-facility live pricing, ratings, amenities, and address details for parking near any destination. No login required.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape SpotHero — the parking spot marketplace. Get city-level parking price overviews, search for parking near any venue, address, or business by name, and pull live per-facility pricing, ratings, amenities, and address details for parking near a specific destination. HTTP-only, no login, no proxy.

What this actor does

  • Three modes: city, search, destination
  • 146 cities exposed as a dropdown enum, spanning the US and Canada
  • Live facility pricing — real quoted total price, advertised price, and currency straight from SpotHero
  • Ratings, amenities, and parking-pass type per facility (self park, valet, scan-in/ticket-out, license plate, etc.)
  • Filters: min/max price, parking-pass type, monthly-parking-only
  • Empty fields are omitted — you'll never see null, "", or [] in the output

Output per city overview (recordType: "cityOverview", mode=city)

  • citySlug, cityName, state, countryCode, timezone, latitude, longitude
  • avgPriceCommuterLow/High, avgPriceWeekendLow/High, avgPriceEventLow/High, avgPriceOvernightLow/High, avgPriceMonthlyLow/High, avgPriceAirportLow/High
  • popularDestinationCount, performerCount
  • sourceUrl, recordType: "cityOverview", scrapedAt

Output per destination pointer (recordType: "destinationPointer", mode=city)

  • destinationTitle, destinationSlug, citySlug
  • sourceUrl, recordType: "destinationPointer", scrapedAt

Output per destination search result (recordType: "destination", mode=search)

  • destinationId, destinationTitle, destinationSlug
  • cityName, citySlug, state, streetAddress, zipcode, timezone
  • latitude, longitude, monthlyEnabled
  • sourceUrl, recordType: "destination", scrapedAt

Output per parking spot (recordType: "parkingSpot", mode=destination, or mode=search with includeSpots)

  • spotId, facilityTitle, facilitySlug
  • destinationTitle, destinationSlug, citySlug, cityName, state
  • streetAddress, postalCode, latitude, longitude
  • distanceMeters, walkingMeters, walkingDurationSeconds
  • ratingAverage, ratingCount, imageUrl
  • parkingType, parkingTypeDisplay, amenities[]
  • rateWindowStart, rateWindowEnd — the actual quoted time window (see FAQ)
  • totalPrice, advertisedPrice, priceCurrency, rateRuleGroup, cancellationThresholdMinutes
  • sourceUrl, recordType: "parkingSpot", scrapedAt

Output per upcoming event at a destination (recordType: "destinationEvent", mode=destination, or mode=search with includeSpots)

  • eventId, eventTitle, startDate, endDate
  • destinationTitle, destinationSlug, citySlug
  • sourceUrl, recordType: "destinationEvent", scrapedAt

Only emitted for destinations that host scheduled events (stadiums, theaters, festival grounds) — useful context for why parking prices spike on certain dates.

Input

FieldTypeDefaultDescription
modestringcitycity / search / destination
citySlugstring (select)chicagoCity to browse (mode=city, destination)
searchQuerystringunited centerVenue/address/business name (mode=search)
destinationSlugsarray["united-center-parking"]Destination URL slugs within citySlug (mode=destination)
arrivalDateTimestringRequested arrival time (advisory — see FAQ)
departureDateTimestringRequested departure time (advisory — see FAQ)
monthlyOnlybooleanfalseOnly keep monthly-parking-enabled destinations/spots
parkingTypestring (select)AnyFilter spots by parking-pass type
minPriceintegerDrop spots priced below this (USD)
maxPriceintegerDrop spots priced above this (USD)
includeSpotsbooleanfalseAlso fetch live pricing for each search result (mode=search)
maxItemsinteger50Hard cap on emitted records (1–1000)

Example: city parking price overview

{
"mode": "city",
"citySlug": "chicago"
}

Example: search for parking near a venue, with live pricing

{
"mode": "search",
"searchQuery": "united center",
"includeSpots": true,
"maxItems": 20
}

Example: live pricing at a specific destination, self-park only

{
"mode": "destination",
"citySlug": "chicago",
"destinationSlugs": ["united-center-parking", "wrigley-field-parking"],
"parkingType": "self_park",
"maxPrice": 30
}

Use cases

  • Event planning — compare parking prices near a stadium or theater before a show
  • Price tracking — monitor a venue's average commuter/weekend/event parking rates over time
  • Travel apps — surface real parking options and ratings alongside a destination
  • Facility research — compare amenities and pass types across nearby parking facilities
  • Local SEO / directories — build a parking directory for a city with real, live data

FAQ

Is this affiliated with SpotHero? No. This is an independent third-party actor that reads SpotHero's own publicly rendered page data — no login or account is used.

Why does rateWindowStart/rateWindowEnd not match my requested arrivalDateTime/departureDateTime? SpotHero's public pages return a live default quote (the site's next available or currently active pricing window) server-side; picking an arbitrary custom date/time requires the interactive date picker on spothero.com, which runs client-side after page load. This actor passes your requested times through, but the price and window on each record are the value the site actually returned — real, not fabricated, just possibly not your exact requested window.

What does parkingType mean? It's SpotHero's own redemption method for a facility: self_park (park it yourself), self_park_see_attendant, scan_in_ticket_out (scan a code, keep a paper ticket), scan_in_out (scan both ways, no ticket), license_plate (monitored by plate, no ticket), or operator_scan.

Why do some cities show fewer avgPrice* bands than others? SpotHero only publishes bands (commuter/weekend/event/overnight/monthly/airport) it has enough data for in a given city; unavailable bands are simply omitted rather than shown as zero.

How fresh is the pricing? Every run fetches SpotHero's live pages directly, so prices, ratings, and availability reflect the current market at scrape time.

Is mode=search sorted by relevance? No — SpotHero's underlying destination directory does a plain substring match on the name, not a relevance ranking. An exact match (e.g. "United Center") may not be the first row returned for a query like "united center"; increase maxItems if you don't see the exact venue you expect on the first page.

Does this work outside the US? Yes — the city list includes Canadian cities (Toronto, Vancouver, Calgary, Edmonton, Ottawa, Winnipeg, Halifax, and more) alongside US markets.