ToDoCanada Events & Attractions Scraper
Pricing
from $3.00 / 1,000 results
ToDoCanada Events & Attractions Scraper
Scrape ToDoCanada.ca - Canadian events and attractions for 11 cities (Toronto, Vancouver, Calgary, Ottawa, ...). Browse events by city or category, search, fetch single event pages (JSON-LD Event schema: dates, venues, addresses, images), and read attraction/things-to-do articles.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape ToDoCanada.ca — Canada's events and attractions site. Browse events by city (Toronto, Vancouver, Calgary, Ottawa, …) or category (adults-only, drive-thru, exhibitions, family, nightlife, food & drink, …), run site search, fetch single event pages, or read attractions / things-to-do articles. Event detail pages carry structured JSON-LD Event data (start/end dates, venue, address, image, ticket link).
What this actor does
- Five modes:
byCity(default),byCategory,search,byEventUrl,attractions - 12 cities as a dropdown: all (whole country), toronto, vancouver, calgary, edmonton, ottawa, winnipeg, banff, jasper, regina, saskatoon, central-alberta
- 12 event categories as a dropdown: adults-only, drive-thru-events, exhibitions, familyevents, festival-events, food-drink-events, free-events, fundraising-gala-events, miscellaneous, nightlife, online, sports-2
- Time-window filter (
etype): upcoming / this week / this weekend / current / this month / next month / past - Filters: event date range (client-side on JSON-LD dates), title/description keyword
- Auto-escalation: curl_cffi (chrome131 impersonation) first; lazy-engages Apify AUTO datacenter proxy + backoff on 403/429/5xx
- Empty fields are omitted; every record carries
sourceUrl,scrapedAt,recordType
Output per event
eventId,title,descriptionstartDate,endDate(ISO, from JSON-LD)venueName,addressStreet,addressLocality,addressRegion,addressPostalCode,addressCountryimageUrl,ticketUrl,price(when the site publishes a number)eventUrl,city,category(mode-scoped)recordType: "event" | "attraction" | "error",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | byCity | byCity / byCategory / search / byEventUrl / attractions |
city | select | toronto | City slug (12 options, incl. all for whole country) |
category | select | exhibitions | Event category slug (12 options) |
searchQuery | string | toronto festival | Site search query (mode=search) |
eventUrls | array | – | Event page URLs (mode=byEventUrl) |
etype | select | upcoming | Listing time window |
dateFrom / dateTo | string | – | Client-side date range filter (ISO) |
containsKeyword | string | – | Title/description substring filter |
maxItems | int | 20 | Hard cap (1–1000) |
Example: upcoming exhibitions in Vancouver
{"mode": "byCategory","city": "vancouver","category": "exhibitions","etype": "upcoming","maxItems": 30}
Example: a single event
{"mode": "byEventUrl","eventUrls": ["https://www.todocanada.ca/city/toronto/event/bd-beats-2026/"]}
Anti-bot notes
Plain curl gets 403 (UA-sensitive); curl_cffi with chrome131 impersonation returns 200 with full content (verified locally). If the cloud run is blocked, the actor lazy-engages the free Apify AUTO datacenter proxy and retries with exponential backoff.
Data source
HTML/JSON-LD from todocanada.ca (WordPress). Event pages embed schema.org/Event JSON-LD. Listing pages paginate at /city/{slug}/events/page/N/. No login required.
Limitations
- Event dates come from the site's JSON-LD, which uses both ISO and MM/DD/YYYY formats (both are normalized to ISO); some listings lack start/end dates (omitted, never sentinel).
searchmode returns event records only. The site search also matches roundup articles (e.g.festival,weekend); when a query's results are articles only, the run emits 0 records with a status message — usebyCity/byCategoryorattractionsfor article content.- The site's JSON-LD emits
addressCountry: "AF"as a country-code default on Canadian events (source-data defect) — this value is omitted instead of shipped. - Attraction image URLs come from
og:image; site-logo/icon URLs are rejected. Some articles have no real image (omitted). - Image URLs are WordPress CDN paths from the site's JSON-LD — served with
200 image/jpegfrom a clean shell (site is UA-sensitive; the browser UA returns 200, no Referer needed). - Invalid inputs produce typed
recordType: "error"records (no silent drops); duplicate/aliased event URLs inbyEventUrlare normalized and deduped to single records.