# Search Hourly Parking

Search SpotHero hourly and daily parking inventory near coordinates for a time window.

- Platform: [SpotHero](https://docs.upscrape.com/docs/platforms/spothero)
- Capability ID: `spothero.parking.search`
- Cost: 1 credit per request
- Maximum runtime: 30 seconds
- Execute endpoint: `POST https://data.upscrape.com/execute`

## Request

Use the exact public capability ID in the shared execute envelope.

```bash
curl --request POST \
  --url https://data.upscrape.com/execute \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Prefer: wait=30" \
  --data '{
  "input": {
    "ends": "2026-09-09T20:00:00-05:00",
    "include_unavailable": false,
    "latitude": 41.881943,
    "limit": 20,
    "longitude": -87.630976,
    "max_distance_meters": 3000,
    "starts": "2026-09-09T16:00:00-05:00"
  },
  "capability": "spothero.parking.search"
}'
```

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ends` | `string` | Yes | Ends supplied for this request. |
| `include_unavailable` | `boolean` | No | Include unavailable supplied for this request. |
| `latitude` | `number` | Yes | Latitude supplied for this request. |
| `limit` | `integer` | No | Maximum number of results to return. |
| `longitude` | `number` | Yes | Longitude supplied for this request. |
| `max_distance_meters` | `integer` | No | Max distance meters supplied for this request. |
| `starts` | `string` | Yes | Starts supplied for this request. |

### Example input

```json
{
  "ends": "2026-09-09T20:00:00-05:00",
  "include_unavailable": false,
  "latitude": 41.881943,
  "limit": 20,
  "longitude": -87.630976,
  "max_distance_meters": 3000,
  "starts": "2026-09-09T16:00:00-05:00"
}
```

## Response

Successful output is returned in `results[0].data`. Raw platform output is intentionally open-ended and may evolve with the upstream source.

### Illustrative sample output

This redacted fixture is an example, not a fixed response schema.

```json
{
  "ends": "2026-09-09T20:00:00-05:00",
  "facilities": [
    {
      "address": "13 North Clark Street",
      "available": true,
      "base_price": 24,
      "facility_id": 2231,
      "facility_type": "garage",
      "lat": 41.88230499999999,
      "lon": -87.630762,
      "navigation_tip": "Enter this location on North Clark Street. NOTE: This garage does not have any signs or an obvious entrance, so please read the directions carefully. \n\nEnter this location at 11 N Clark St.  This is entrance address for the 70 Madison St. Building valet garage. It is located on the east/left-hand side of N Clark (a one-way street) between W Washington St. and W Madison St.  \n\nThe entrance is immed…",
      "operator": "LAZ Parking",
      "rating_average": 4.6,
      "rating_count": 1502,
      "title": "13 N Clark St. (70 W Madison Building)",
      "total_price": 25.44,
      "walking_meters": 61
    },
    {
      "address": "38 North Wells Street",
      "available": true,
      "base_price": 15,
      "facility_id": 4532,
      "facility_type": "garage",
      "lat": 41.882829071688995,
      "lon": -87.63399845581961,
      "navigation_tip": "Enter this location at 38 N Wells St. This is the Washington-Wells garage operated by Interpark. It is located on the west/right-hand side of N Wells St. (a one-way street) between W Washington St. and W Madison St. You may also enter this location at its other entrance, 217 W Washington St.",
      "rating_average": 4.8,
      "rating_count": 6440,
      "title": "38 N Wells St. - Washington-Wells Garage",
      "total_price": 15.99,
      "walking_meters": 342
    },
    {
      "address": "41 West Marble Place",
      "available": true,
      "base_price": 19,
      "facility_id": 2759,
      "facility_type": "garage",
      "lat": 41.88008769999999,
      "lon": -87.6291143,
      "navigation_tip": "The best address for GPS is 131 S Dearborn. This is the former Citadel Center garage, operated by LAZ. The facility entrance is located in the alley (Marble Place) on the east side of Dearborn, between Adams St. and Monroe. While heading northbound on Dearborn St., after crossing Adams St., turn right into the alley, just past the Monroe CTA Blue Line entrance.  After turning into the alley, the g…",
      "operator": "LAZ - Indirect Parking",
      "rating_average": 4.9,
      "rating_count": 6173,
      "title": "41 W Marble St (131 S Dearborn St.) - Formerly Citadel Center",
      "total_price": 20.14,
      "walking_meters": 350
    }
  ],
  "latitude": 41.881943,
  "longitude": -87.630976,
  "scraped_at": "2026-08-30T12:44:33Z",
  "search_type": "transient",
  "starts": "2026-09-09T16:00:00-05:00"
}
```
### Illustrative output fields

Derived from the sample above for orientation only. These fields are not a fixed response schema.

| Path | Observed type | Example |
| --- | --- | --- |
| `ends` | `string` | 2026-09-09T20:00:00-05:00 |
| `facilities` | `array` | 3 items |
| `facilities` | `array` | 3 items |
| `latitude` | `number` | 41.881943 |
| `longitude` | `number` | -87.630976 |
| `scraped_at` | `string` | 2026-08-30T12:44:33Z |
| `search_type` | `string` | transient |
| `starts` | `string` | 2026-09-09T16:00:00-05:00 |

## Execution behavior

A `200` response completed inline. A `202` response was queued; poll `GET /jobs/{id}` until the job reaches `completed` or `failed`. Use an `Idempotency-Key` when retrying must not create a duplicate logical job.

## Related documentation

- [Authentication](https://docs.upscrape.com/docs/api/authentication)
- [Jobs and results](https://docs.upscrape.com/docs/api/jobs)
- [Errors and retries](https://docs.upscrape.com/docs/api/errors)
- [Idempotency](https://docs.upscrape.com/docs/api/idempotency)
