spotangels.com APIspotangels.com ↗
Search parking spots, garages, monthly rates, and active deals near any location via the SpotAngels API. 9 endpoints covering hourly, monthly, and free parking.
curl -X GET 'https://api.parse.bot/scraper/30085b55-bdc4-498c-b8e3-a37f3ee94129/search_parking_by_location?latitude=40.758&longitude=-73.9855' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for parking spots near a given lat/lng coordinate. Returns bookable garages and parking options with pricing, walking time, and deal information. Defaults to a 2-hour window starting now if times are not specified.
| Param | Type | Description |
|---|---|---|
| monthly | boolean | If true, search for monthly parking options instead of hourly |
| to_time | string | End time in ISO 8601 format (e.g., 2026-05-15T12:00:00.000Z). Defaults to 2 hours from now. |
| latituderequired | number | Latitude of the location |
| from_time | string | Start time in ISO 8601 format (e.g., 2026-05-15T10:00:00.000Z). Defaults to now. |
| longituderequired | number | Longitude of the location |
{
"type": "object",
"fields": {
"address": "string resolved address of the search location",
"geojson": "GeoJSON FeatureCollection of parking spot locations",
"results": "array of parking spot objects with id, type, address, price, distance, deals",
"currency": "object with currency layout format string"
},
"sample": {
"data": {
"address": "220 Geary Street, San Francisco",
"geojson": {
"type": "FeatureCollection",
"features": []
},
"results": [
{
"id": 1056656,
"name": "Garage - $12",
"type": "garage",
"price": 12,
"address": "124 Mason Street, San Francisco",
"bookable": true,
"distance": 344,
"price_fmt": "$12",
"garage_name": "55 Cyril Magnin St. Parc 55 Hotel parking",
"walking_time_fmt": "4 min walk"
}
],
"currency": {
"layout": "$%s"
}
},
"status": "success"
}
}About the spotangels.com API
The SpotAngels API exposes 9 endpoints for querying parking availability, pricing, and deals across supported cities. Use search_parking_by_location to find nearby garages with hourly or monthly rates given a lat/lng pair, or search_parking_by_address to geocode a text query first. Responses include structured spot objects with pricing, walking distance, deal metadata, and GeoJSON geometries for map rendering.
Searching for Parking
The two primary search endpoints — search_parking_by_location and search_parking_by_address — accept either a lat/lng coordinate pair or a free-text address query, respectively. Both return a results array of parking spot objects containing id, type, address, price, distance, and deals, alongside a GeoJSON FeatureCollection for mapping and a currency object describing the local format. Time windows are specified with from_time and to_time in ISO 8601 format; both default to a 2-hour window starting at the moment of the request. Setting monthly=true switches the search to monthly-rate options.
Filtered Endpoints by Parking Type
Three convenience endpoints narrow results to specific parking types without requiring client-side filtering. get_hourly_parking_near_location and get_monthly_parking_near_location accept only latitude and longitude and return spot objects typed to their respective billing cadence — monthly results include additional fields like rate_id, monthly_type, and down_payment. get_free_parking_near_location returns a total count alongside the filtered results array, and returns an empty array in areas where no free spots are indexed. get_garage_deals similarly returns a total and results scoped to spots carrying active deal or deals metadata.
Spot Detail and Geocoding
get_parking_spot_details accepts a numeric spot_id obtainable from any search response and returns four distinct data groups: a status object with garage name, operator, coordinates, and deals; a calendar array of opening-hour entries; a pictures array with image URLs and metadata; and a crowdsource object with accuracy status and park count. When supplying time parameters to this endpoint, from_time and to_time must be provided together — passing from_time alone will cause an error. The standalone geocode_address endpoint resolves a text query to up to 5 ranked candidates, each with lat, lon, and display_name fields.
Coverage and City Support
get_supported_cities takes no inputs and returns the full list of cities where SpotAngels has parking data, each with a name and slug. Callers should check this list before querying coordinates to confirm coverage for a given metro area.
- Display a map of nearby bookable garages with pricing overlays using GeoJSON output from
search_parking_by_location - Surface active parking deals in a city guide app by querying
get_garage_dealsfor a given lat/lng - Build a commuter dashboard that compares monthly parking rates and down payment requirements near an office address
- Show free street parking availability for budget-conscious drivers using
get_free_parking_near_location - Populate a parking detail page with photos, opening hours, and crowd-sourced accuracy data from
get_parking_spot_details - Resolve user-typed addresses to coordinates before parking search using
geocode_addresswith up to 5 ranked candidates - Gate parking searches to supported regions by checking
get_supported_citiesbefore executing location queries
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does SpotAngels have an official developer API?+
What does `get_parking_spot_details` return that the search endpoints don't?+
get_parking_spot_details returns four structured response groups not present in search results: a calendar array with opening-hour schedules, a pictures array with image URLs, a crowdsource object with accuracy status and park count, and a richer status object that includes garage_name and operator fields. Search endpoints only return summary pricing, distance, and deal flags.Is there a known quirk when calling `get_parking_spot_details` with time parameters?+
from_time, you must also supply to_time in the same request. Sending from_time without to_time will produce an upstream error. to_time can be sent alone without issue.Does the API support real-time availability or reservation booking?+
Does the API cover parking outside the US?+
get_supported_cities endpoint returns the definitive list of available city slugs. If a city you need is absent, you can fork this API on Parse and revise it to extend coverage as new cities are added to SpotAngels.