Skip to content
GET/v1/{metro}/eventsall plans

List events

Published, active events in the metro, ordered by starts_at ascending (then id).

Show more

from/to are local dates in the metro's timezone and compare against starts_local; from defaults to today, to to from + 30 days, so a list with no to covers one month. Rows below min_confidence (default 0.7) are dropped (pass 0 to disable), and adults audiences are left out unless asked for. meta.applied_filters echoes the value of each of these in effect and meta.defaults_applied lists the ones that came from a default. facets= adds counts over the whole filtered set; see Market overview with facets. changed_since switches to sync mode: rows with updated_at > changed_since, ordered by updated_at, id, paged with cursor instead of page.

occurrences=expand lists every occurrence of a recurring event in the window, for calendar views; see the occurrences parameter. For per-day counts over a month, see /v1/{metro}/events/calendar.

Try this requestRun it with sample data, no key needed. Paste a key to run it live.
Example request
curl -sS \
  -H "X-API-Key: $TAILEND_API_KEY" \
  "https://api.tailend.dev/v1/philadelphia/events"
Example response · 200
{
  "data": [
    {
      "id": "b81a95d2-1d4e-46fd-9cff-322a41e429ad",
      "type": "event",
      "slug": "toddler-time-ages-5-and-under-toddler-time-observer-e50d61ea",
      "name": "Toddler Time (Ages 5 and Under) / Toddler Time Observer",
      "description": "Includes Treehouses and Free Play Areas for toddlers ages 5 and under.",
      "starts_local": "2026-09-14T09:30:00",
      "ends_local": null,
      "start_time": "09:30:00",
      "has_time": true,
      "has_date": true,
      "all_day": false,
      "timezone": "America/New_York",
      "starts_at": "2026-09-14T13:30:00.000Z",
      "ends_at": null,
      "is_recurring": true,
      "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
      "recurrence_description": null,
      "place": {
        "id": "9cde4494-6c2a-4bfc-b15a-22edce13f3f7",
        "slug": "treehouse-world-d34361f7",
        "name": "Treehouse World"
      },
      "location": {
        "address": "1442 Phoenixville Pike, West Chester, PA 19380, USA",
        "street_address": "1442 Phoenixville Pike, West Chester, PA 19380, USA",
        "city": "West Chester",
        "state": "PA",
        "zip": "19380",
        "lat": 40.0240296,
        "lng": -75.5858949,
        "neighborhood": "Newtown Square",
        "neighborhood_slug": "newtown-square"
      },
      "price": {
        "type": "fixed",
        "min": 12,
        "max": 12,
        "scope": "admission",
        "note": "$12.00",
        "unit": "per_session",
        "is_free": false,
        "currency": "USD"
      },
      "ages": {
        "min": 1,
        "max": 5,
        "text": null,
        "audience": "kids",
        "bands": [
          "baby",
          "toddler",
          "young_kids"
        ]
      },
      "audience": "kids",
      "traits": {
        "seasons": [
          "fall"
        ]
      },
      "categories": [
        "social_play_spaces"
      ],
      "occasions": [],
      "teams": [],
      "registration_url": "https://treehouseworld.com/pages/admission-prices",
      "ticket_url": null,
      "registration_required": false,
      "is_sold_out": false,
      "image_url": null,
      "organization": {
        "id": "c45b9b3a-45ab-4f9c-b2e2-986dcb921f25",
        "name": "Treehouse World",
        "slug": "treehouseworldcom-a86bfd79"
      },
      "confidence": 1,
      "verified_at": "2026-09-26T14:06:38.332Z",
      "metro": "philadelphia",
      "status": "published",
      "created_at": "2026-09-14T08:04:04.969Z",
      "updated_at": "2026-09-26T14:06:38.788Z",
      "links": {
        "self": "/v1/events/b81a95d2-1d4e-46fd-9cff-322a41e429ad",
        "place": "/v1/places/9cde4494-6c2a-4bfc-b15a-22edce13f3f7",
        "organization": "/v1/organizations/c45b9b3a-45ab-4f9c-b2e2-986dcb921f25"
      }
    }
  ],
  "meta": {
    "limit": 1,
    "count": 1,
    "has_more": false,
    "applied_filters": {
      "from": "2026-09-14",
      "to": "2026-10-14",
      "min_confidence": 0.7,
      "audience": [
        "not_adults"
      ]
    },
    "defaults_applied": [
      "from",
      "to",
      "min_confidence",
      "audience"
    ]
  }
}

Try any request with sample data, no key needed. Available on every plan.

Metro slug from /v1/metros (e.g. philadelphia).

Optional parameters (40)

Fetch specific listings of this resource type in one call: up to 100 comma-separated listing UUIDs (ids=<id>,<id>).

Local calendar date (metro timezone), inclusive.

Local calendar date (metro timezone), inclusive; at most 366 days after from.

Drop rows whose confidence is below this.

Keep rows whose categories contain any of these.

Keep rows whose audience is one of these.

Events, classes and camps only.

Events and classes tagged for a seasonal occasion.

Events built around a local pro sports team (watch parties, game-day themed events, team or mascot appearances).

A child's age in years.

Neighborhood slug or free-text name (case-insensitive).

Center latitude for a radius search.

Center longitude for a radius search.

Radius in metres around lat/lng (or near_zip, where enabled).

Beta — may not be enabled for all keys yet.

Beta — may not be enabled for all keys yet.

Beta — may not be enabled for all keys yet.

Keep rows held at this place (place.id).

Events, classes, and camps only; ignored for places.

true keeps only events with a stated clock time.

Filter on is_recurring.

expand lists one item per occurrence instead of one per event: a recurring series appears once for every occurrence that starts inside [from, to], each with the same id and its own occurrence block; a one-off event appears once, its occurrence built from its own times.

Filter on is_indoor, a fact about the linked place.

Filter on is_outdoor, a fact about the linked place.

Filter on is_sensory_friendly (on events and classes, the linked place's; on places, the place's own).

Sync mode.

Full-text search over the listing's name and search text (websearch syntax: storytime park, "drop in", art -camp).

Keep rows on any of these local days.

Local start time at or after this, HH:MM (or HH:MM:SS).

Local start time strictly before this, HH:MM; 09:00–12:00 is the morning and 12:00 belongs to the afternoon.

A budget.

Keep rows published by this organization (organization.id).

Keep only these dotted paths on each item (name,place.name,price.is_free); id and type are always kept so a trimmed item stays addressable.

Attach the full Place and/or the Organization behind each item under expanded, one extra read per expansion per page (not per row).

Opt into a block the lean default response leaves out.

How an include= the key is not entitled to is handled.

Opaque cursor from meta.next_cursor.

1-based page number (browse mode).

Counts over every listing that matches the filters, not just this page, returned as a top-level facets object beside data and meta.

Items per page, 1 to 200.

Ctrl Enter to send