OpenActive Opportunity Extractor avatar

OpenActive Opportunity Extractor

Pricing

from $0.35 / 1,000 items

Go to Apify Store
OpenActive Opportunity Extractor

OpenActive Opportunity Extractor

Point at ANY OpenActive dataset site, data catalog, or RPDE feed and harvest UK sports & activity opportunity data — classes, sessions, facility slots and events from 100s of leisure operators (GLL, Everyone Active, Halo...). Follows the RPDE cursor, handles tombstones. Pay per item.

Pricing

from $0.35 / 1,000 items

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Point at any OpenActive dataset site, data catalog, or RPDE feed and harvest UK sports & physical-activity opportunity data — classes, sessions, bookable facility slots, courses and events published by leisure operators (GLL/Better, Everyone Active, Halo, Active Leeds, Places Leisure and 100s more) under the open OpenActive standard.

One actor spans the whole ecosystem — no per-operator scraper. It walks the standard OpenActive data graph and follows the RPDE (Realtime Paged Data Exchange) cursor to the end.

What it does

  • feed mode (default) — harvest the RPDE opportunity items from one or more feed URLs, following the next cursor until the feed is exhausted (the RPDE "empty last page points to itself" convention). Heterogeneous kind per item (FacilityUse, Slot, SessionSeries, ScheduledSession, Event) is normalized into a common envelope while the full raw data object is preserved. state:"deleted" tombstones are emitted as deletion rows.
  • catalog mode — traverse the OpenActive data-catalog graph (master collection → sub-catalogs → operator dataset sites → their feed contentUrls) and emit the operator feed inventory: one row per discovered feed (operator, dataset name, feed kind, feed URL). Start from the master catalog, a single sub-catalog, or one dataset-site URL.

Input

FieldTypeDescription
startUrlstringAn RPDE feed URL, a dataset-site URL (feeds auto-resolved), several feed URLs (comma-separated), or a catalog URL. In catalog mode, leave empty to default to the master OpenActive data catalog.
modeenumfeed (harvest items) or catalog (discover feeds). Default feed.
feedKindarrayOptional filter: FacilityUse, SessionSeries, ScheduledSession, Slot, Event. Empty = all.
includeDeletedbooleanEmit deleted tombstones as deletion rows (default true).
maxRecordsintegerMax total rows to emit (default 5000).
maxPagesintegerSafety cap on RPDE pages per feed (default 50).
extraHeadersobjectOptional extra HTTP headers (feeds need no auth).

Example — harvest a facility-use feed

{
"startUrl": "https://halo-openactive.legendonlineservices.co.uk/api/facility-uses",
"mode": "feed",
"maxRecords": 500
}

Example — discover every operator feed from the master catalog

{
"mode": "catalog",
"maxRecords": 500
}

Output

Each item is one row. In feed mode:

{
"_mode": "item",
"kind": "FacilityUse",
"state": "updated",
"deleted": false,
"name": "Badminton",
"activity": ["Badminton"],
"provider": "Halo Leisure",
"startDate": null,
"type": "FacilityUse",
"data": { "... full OpenActive opportunity object ..." }
}

In catalog mode each row is a discovered feed (operator, datasetName, feedKind, feedUrl).

How it works

  • RPDE cursor paging — follows next until an empty page that points to itself; never stops on a short page or a naive page count.
  • Tombstonesdeleted items carry no data; emitted as deletions without dereferencing missing fields.
  • Catalog graph — recurses hasPart (sub-catalogs) → dataset (operator site URLs) → embedded application/ld+json Dataset.distribution[].contentUrl.
  • Content types — accepts application/vnd.openactive.rpde+json, application/json, and application/ld+json.

Pricing

Pay per result — one item event per emitted opportunity/feed row. No subscription.

Notes

  • All OpenActive feeds are open data (typically CC-BY 4.0) — no authentication required.
  • RPDE feeds are change logs; most pages contain deleted tombstones. Disable includeDeleted to keep only live opportunities.