ToDoCanada Events & Attractions Scraper avatar

ToDoCanada Events & Attractions Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
ToDoCanada Events & Attractions Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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, description
  • startDate, endDate (ISO, from JSON-LD)
  • venueName, addressStreet, addressLocality, addressRegion, addressPostalCode, addressCountry
  • imageUrl, ticketUrl, price (when the site publishes a number)
  • eventUrl, city, category (mode-scoped)
  • recordType: "event" | "attraction" | "error", scrapedAt

Input

FieldTypeDefaultDescription
modeselectbyCitybyCity / byCategory / search / byEventUrl / attractions
cityselecttorontoCity slug (12 options, incl. all for whole country)
categoryselectexhibitionsEvent category slug (12 options)
searchQuerystringtoronto festivalSite search query (mode=search)
eventUrlsarrayEvent page URLs (mode=byEventUrl)
etypeselectupcomingListing time window
dateFrom / dateTostringClient-side date range filter (ISO)
containsKeywordstringTitle/description substring filter
maxItemsint20Hard 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).
  • search mode 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 — use byCity/byCategory or attractions for 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/jpeg from 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 in byEventUrl are normalized and deduped to single records.