ClassForKids APIclassforkids.io ↗
Search kids clubs, classes, camps, and activities across the UK via the ClassForKids API. Get schedules, pricing, availability, and booking links.
What is the ClassForKids API?
The ClassForKids API provides 3 endpoints to search and retrieve data from ClassForKids.io, covering kids clubs, classes, and camps across the UK. The search_clubs endpoint returns results sorted by distance with fields including age range, activity type, venue name, and booking URL. The get_club_schedule endpoint exposes term-by-term class schedules with capacity, spots available, trial pricing, and camp week pricing.
curl -X GET 'https://api.parse.bot/scraper/5af31c82-fbb2-4a02-bf33-10fefd6c7972/search_locations?query=London&country=GB' \ -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 classforkids-io-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: ClassForKids SDK — search clubs, get schedules, filter by activity."""
from parse_apis.classforkids_api import ClassForKids, ActivityType, Country, ClubNotFound
client = ClassForKids()
# Search for locations to get coordinates
for loc in client.locations.search(query="London", country=Country.GB, limit=5):
print(loc.name, loc.city, loc.latitude, loc.longitude)
# Search for clubs near London with pagination capped
club = client.clubs.search(location="London", limit=1).first()
if club:
print(club.name, club.slug, club.distance_miles, club.venue_name)
for activity in club.activities:
print(activity.name, activity.type)
# Get the full schedule for this club
try:
schedule = club.get_schedule()
print(schedule.total_classes, schedule.total_camps)
for term in schedule.terms:
print(term.term_name, term.payment_scheme)
for cls in term.classes:
print(cls.class_name, cls.capacity, cls.spots_available, cls.booking_url)
for camp in schedule.camps:
print(camp.camp_name, camp.venue_name, camp.age_range)
except ClubNotFound as exc:
print(f"club gone: {exc}")
# Filter search by activity type
for dance_club in client.clubs.search(location="Manchester", activity_type=ActivityType.DANCE, limit=3):
print(dance_club.name, dance_club.age_range, dance_club.booking_url)
print("exercised: locations.search / clubs.search / club.get_schedule / ActivityType + Country enums")
Search for locations to get coordinates for club search. Returns matching locations with latitude/longitude needed for the search_clubs endpoint. Each location includes name, city, county, country, and coordinates.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Location search query (e.g., 'London', 'Manchester', 'Edinburgh') |
| country | string | Country code for location search (e.g., 'GB', 'IE') |
{
"type": "object",
"fields": {
"query": "string - the search query submitted",
"total": "integer - number of locations found",
"country": "string - the country code used",
"locations": "array of location objects with name, city, county, country, latitude, longitude, match_level, relevance_score"
}
}About the ClassForKids API
Location Search and Club Discovery
The search_locations endpoint accepts a text query (e.g., 'Edinburgh') and an optional country code, returning an array of location objects each with name, city, county, latitude, and longitude. The coordinates from this endpoint feed directly into search_clubs as the latitude and longitude parameters. If coordinates are omitted from search_clubs, the API auto-geocodes from the provided location string.
Searching for Clubs and Camps
search_clubs returns two result types — classes and camps — with counts split into classes_count and camps_count. Each result object includes slug, name, type, distance_miles, age_range, venue_name, activities, and booking_url. You can narrow results with the activity_type parameter, which accepts values such as 'dance', 'football', 'sport', 'education', 'artscrafts', and 'music'. The available_activity_types array in the response lists all valid filter values for the queried location. Pagination is handled via page and limit parameters. Coverage is strongest for GB; the country_code filter accepts 'IE' but may return fewer results.
Club Schedule and Pricing Detail
get_club_schedule takes a club_slug (obtainable from the slug field in search_clubs results) and returns structured schedule data organised by terms. Each term includes term_name, payment_scheme, and a classes array with schedule times, venue, age range, capacity, spots_available, trial_price, and booking URL. Camp data is returned in a separate camps array with camp_name, venue_name, age_range, and weekly pricing with dates. The total_classes and total_camps fields give quick count summaries without iterating nested arrays.
The ClassForKids API is a managed, monitored endpoint for classforkids.io — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when classforkids.io 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 classforkids.io 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 postcode-based activity finder that surfaces nearby kids clubs with distance, age range, and direct booking links.
- Aggregate trial class availability across multiple clubs in a city using
spots_availableandtrial_pricefromget_club_schedule. - Create a holiday camp planner by filtering
search_clubsresults by type and fetching weekly camp pricing viaget_club_schedule. - Monitor class capacity changes over time using the
spots_availableandcapacityfields to alert parents when spaces open. - Filter dance or football classes for a specific age group by combining the
activity_typeparameter withage_rangein results. - Populate a local parenting app with term dates, payment schemes, and venue names pulled from the
termsarray.
| 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 ClassForKids have an official developer API?+
What does `get_club_schedule` return beyond basic club info?+
term_name, payment_scheme, class times, capacity, spots_available, and trial_price per class. For camps, it returns a separate camps array with weeks containing dates and pricing. This is the only endpoint that exposes pricing and real-time availability.How does activity type filtering work in `search_clubs`?+
'dance', 'football', or 'education' to the activity_type parameter. The response also includes an available_activity_types array listing all filter values that have results for the queried location, so you can build dynamic filter UIs without hardcoding values.Is coverage available outside the UK?+
GB). The country_code parameter accepts 'IE' for Ireland, but the response may return significantly fewer results. Other country codes are not documented. You can fork this API on Parse and revise it to extend coverage or handle additional country codes differently.