Getloke APIapp.getloke.com ↗
Access ~27,000 skateboard spots worldwide via the Loke Skate Spots API. Get coordinates, spot type, address, images, and social stats for parks, rails, ledges, and more.
What is the Getloke API?
The Loke Skate Spots API covers roughly 27,000 skateboard spots worldwide across two endpoints. Use get_all_spots to retrieve the full catalog as a lightweight array filtered by type or name, then call get_spot_details with a spot ID to fetch the complete record — including street address, founder info, image URL, likes, comments, views, and approval status.
curl -X GET 'https://api.parse.bot/scraper/36f11dc3-7efd-4638-bc12-dba2946311ce/get_all_spots?type=Park&query=park' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace app-getloke-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Loke Skate Spots SDK — discover and inspect skate spots worldwide."""
from parse_apis.loke_skate_spots_api import LokeSkateSpots, SpotType, SpotNotFound
client = LokeSkateSpots()
# List skatepark spots filtered by type, capped at 5 total items.
for spot in client.spots.list(type=SpotType.PARK, limit=5):
print(spot.name, spot.latitude, spot.longitude)
# Drill into a single spot's full details via .first()
first_spot = client.spots.list(query="ledge", limit=1).first()
if first_spot:
detail = first_spot.details()
print(detail.name, detail.type, detail.description)
print(detail.address.city, detail.address.country)
print(detail.likes_count, detail.comments_count, detail.total_views)
# Construct a spot by known ID and fetch its details directly.
try:
known = client.spot(id=12).details()
print(known.name, known.session_count, known.skate_videos_count)
except SpotNotFound as exc:
print(f"Spot not found: {exc.spot_id}")
print("exercised: spots.list / spot.details / constructible spot / SpotNotFound error")
Get all skateboard spots with basic info. Supports optional filtering by spot type and search query. Returns ~27,000 spots with name, type, and coordinates. Type and query filters are applied client-side after fetching.
| Param | Type | Description |
|---|---|---|
| type | string | Filter by spot type. Accepted values include Park, Ledge, Rail, Gap, Stairs, Bank, Ramp, Pad, Flatland, Downhill, Wallride. |
| query | string | Search query to filter spots by name. |
{
"type": "object",
"fields": {
"spots": "array of spot objects with id, name, type, longitude, latitude",
"total": "integer - number of spots returned"
},
"sample": {
"data": {
"spots": [
{
"id": 5028,
"name": "Lenox Skatepark",
"type": "Park",
"latitude": 41.4750235,
"longitude": -87.9972237
},
{
"id": 266,
"name": "Balmoral Skatepark",
"type": "Park",
"latitude": -33.830409,
"longitude": 151.25404
}
],
"total": 11462
},
"status": "success"
}
}About the Getloke API
Catalog Endpoint
get_all_spots returns every spot in the Loke database as an array of lightweight objects, each containing id, name, type, latitude, and longitude. The optional type parameter accepts values like Park, Ledge, Rail, Gap, Stairs, Bank, Ramp, Pad, Flatland, Downhill, and Wall, letting you scope the response to a single spot category. The optional query parameter does a case-insensitive substring match against spot names, useful for finding a specific plaza or skate shop by name. The response also includes a total count reflecting how many spots matched after any filtering.
Detail Endpoint
get_spot_details accepts a numeric spot_id (taken from get_all_spots results) and returns the full record for that location. The address object breaks down into street, city, state, zip, and country. Social signals — likes, comments, and views — let you gauge how active or well-known a spot is within the community. The found_by object exposes the first and last name of the person who originally submitted the spot, and is_approved tells you whether it has passed moderation. An image_url links directly to a photo of the spot.
Coverage and Filtering
The catalog spans street spots, skateparks, and skate shops globally. Because get_all_spots returns the entire dataset in one call, geographic filtering is done client-side using the latitude and longitude fields — you can compute distance from a reference point and sort or threshold accordingly. Spot types are returned as comma-separated strings in the detail response, so a single location can carry multiple classifications (for example, a spot tagged as both Ledge and Stairs).
The Getloke API is a managed, monitored endpoint for app.getloke.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when app.getloke.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official app.getloke.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a map of nearby skateparks by filtering
get_all_spotswith typeParkand computing distance from a user's coordinates. - Create a spot-discovery app that lets skaters search by name using the
queryparam to find specific plazas or famous street spots. - Rank spots by community engagement by reading
likes,comments, andviewsfromget_spot_details. - Populate a travel itinerary tool with skate stops in a city by filtering results on the
cityfield from the address object. - Audit spot coverage or data quality by reading the
is_approvedflag across detail records. - Aggregate founder contributions by collecting
found_bydata across many spot detail calls to identify prolific community contributors. - Feed a mobile app's offline cache with the full lightweight catalog from
get_all_spots, deferring full detail fetches to on-demand calls.
| 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 | 100 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 Loke have an official public developer API?+
What does `get_all_spots` return versus `get_spot_details`?+
get_all_spots returns a stripped-down record for every spot — just id, name, type, latitude, and longitude — optimized for bulk retrieval and map rendering. get_spot_details returns the complete record for a single spot, adding address, image_url, description, found_by, social stats (likes, comments, views), and is_approved. The intended pattern is to list with get_all_spots, then fetch detail only for spots the user selects.Can I filter spots by geographic bounding box or radius directly in the API?+
get_all_spots. You can fork this API on Parse and revise it to add a server-side geo-filter endpoint.Are skate shops included in the catalog, or only skate spots?+
get_all_spots with their own type designation. However, shop-specific fields like hours, phone numbers, or website URLs are not exposed as distinct fields in get_spot_details. You can fork this API on Parse and revise it to add those fields if the underlying source exposes them.How fresh is the spot data, and are removed or unapproved spots filtered out automatically?+
is_approved field in get_spot_details indicates moderation status, but the full catalog returned by get_all_spots may include spots regardless of approval state. Data freshness depends on when the API is called — there is no built-in change-feed or delta endpoint. Consumers should re-query the catalog periodically and check is_approved on detail records if moderation status matters for their use case.