ToDoCanada Events Scraper
Pricing
Pay per event
ToDoCanada Events Scraper
🇨🇦 Extract Canadian events, schedules, venues, prices, organizers, images, and ticket links from ToDoCanada city guides and event pages.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Extract structured Canadian event data from ToDoCanada city guides, discovery pages, and individual event listings.
Turn public event pages into a clean dataset of schedules, venues, prices, organizers, images, and registration links. Run it once for research or schedule it to maintain a current local events feed.
What does ToDoCanada Events Scraper do?
The Actor accepts one or more todocanada.ca URLs and discovers event records embedded in their public pages.
It supports:
- City and weekend guides
- Category and editorial discovery pages
- Individual event URLs
- Multiple source URLs in one run
- Canonical URL deduplication
- Optional detail-page enrichment
- JSON, CSV, Excel, XML, and RSS exports through Apify
Each dataset row represents one event. No account or ToDoCanada credentials are required.
Who is it for?
Tourism publishers
Build city calendars and destination guides from normalized event listings.
Event calendar operators
Discover new listings and refresh dates, venues, and registration links on a schedule.
Travel applications
Add local activities to trip-planning and recommendation workflows.
Venue and entertainment marketers
Research event timing, categories, organizers, and local competition.
Data teams
Feed Canadian event records into warehouses, dashboards, and enrichment pipelines.
Why use this event scraper?
- Structured output: avoid copying inconsistent editorial pages by hand.
- Repeatable monitoring: rerun the same sources daily or weekly.
- Flexible inputs: combine broad guides with specific event URLs.
- Useful provenance: every row preserves its discovery source and canonical event link.
- Efficient extraction: HTTP and embedded structured data avoid browser overhead.
- Safe limits:
maxItemscontrols dataset size and run cost.
What data can you extract?
| Field | Type | Description |
|---|---|---|
title | string | Event title |
description | string | Public event summary |
startDate | string | Start date or date-time from the source |
endDate | string | End date or date-time when available |
venueName | string | Venue or location name |
address | object | Street, city, province, postal code, and country |
price | string | Published price information |
isFree | boolean | Whether structured data identifies a free event |
organizer | string | Organizer name when published |
categories | array | Event keywords or categories |
imageUrl | string | Main event image |
eventUrl | string | Canonical ToDoCanada event URL |
ticketUrl | string | Ticket or registration URL |
sourceUrl | string | Discovery URL supplied in the input |
scrapedAt | string | UTC extraction timestamp |
Optional source fields may be absent when ToDoCanada does not publish them.
How to scrape ToDoCanada events
- Open the Actor input page.
- Add a city guide, category page, search page, or event URL.
- Set the maximum number of events.
- Enable detail pages if richer records justify extra requests.
- Start the run.
- Preview the Events dataset.
- Export or connect the dataset to your workflow.
For a cheap first run, keep detail enrichment disabled and request 20 events.
Input
{"startUrls": [{ "url": "https://www.todocanada.ca/things-to-do-in-toronto-this-weekend/" }],"maxItems": 100,"includeDetails": false,"deduplicate": true}
startUrls
A list of public ToDoCanada URLs. Use discovery pages for broad collection and explicit event pages for focused extraction.
maxItems
Maximum unique events emitted across all sources. Allowed range: 1 to 10,000.
includeDetails
When enabled, the Actor visits discovered event pages and merges richer structured fields. This increases run time and requests.
deduplicate
When enabled, repeated canonical event URLs are emitted only once.
Output example
{"title": "Toronto International Harp Festival 2026","description": "A global gathering of harpists, educators, and music lovers.","startDate": "2026-07-06","endDate": "2026-07-12","venueName": "Various Locations","address": {"city": "Toronto","province": "ON"},"isFree": false,"eventUrl": "https://www.todocanada.ca/city/toronto/event/toronto-international-harp-festival-2026/","sourceUrl": "https://www.todocanada.ca/things-to-do-in-toronto-this-weekend/","scrapedAt": "2026-07-12T00:00:00.000Z"}
How much does it cost to scrape ToDoCanada events?
This Actor uses pay-per-event pricing: a small run-start charge plus a charge for each dataset item. Apify plan tiers receive volume discounts.
Use maxItems to set a predictable upper bound. HTTP extraction keeps compute usage low. Enabling detail pages adds one request per discovered event but does not create duplicate output charges.
Check the live Actor pricing panel for exact tier prices before starting a run.
Event discovery and deduplication
Discovery pages often repeat an event in several editorial sections. The Actor uses the canonical ToDoCanada event URL as its primary identity.
When multiple input pages contain the same event, deduplication keeps the first record and preserves that source URL. Disable deduplication only when source-page membership itself matters to your analysis.
Detail-page enrichment
Leave includeDetails off when listing-page fields are sufficient or speed is the priority.
Enable it when you need the best available description, organizer, categories, image, price, venue, or registration link. A failed detail request does not discard a usable discovery record.
Scheduling and event monitoring
Create an Apify schedule to run the same city pages daily or weekly.
A typical monitoring workflow is:
- Run this Actor on selected city sources.
- Export the current dataset.
- Compare
eventUrl,startDate,endDate, andpricewith the prior run. - Notify your team about new or changed events.
- Remove expired records according to your own retention policy.
Integrations
Google Sheets
Use the Google Sheets integration to maintain an editorial event calendar.
Webhooks
Send a run-finished webhook to an API, automation platform, or serverless function.
Zapier and Make
Trigger downstream publishing, review, enrichment, or notification steps.
Data warehouses
Load dataset exports into BigQuery, Snowflake, PostgreSQL, or your object store.
Slack and email
Notify curators when a monitored city produces new event URLs.
API usage
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/todocanada-events-scraper').call({startUrls: [{ url: 'https://www.todocanada.ca/things-to-do-in-toronto-this-weekend/' }],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/todocanada-events-scraper').call(run_input={'startUrls': [{'url': 'https://www.todocanada.ca/things-to-do-in-toronto-this-weekend/'}],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~todocanada-events-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.todocanada.ca/things-to-do-in-toronto-this-weekend/"}],"maxItems":100}'
Use with Apify MCP
Connect through https://mcp.apify.com?tools=automation-lab/todocanada-events-scraper from Claude Code, Claude Desktop, or another MCP client.
Example prompts:
- “Extract up to 100 events from this ToDoCanada Toronto guide.”
- “Collect these Vancouver and Calgary event pages and return venue addresses.”
- “Run my saved Canadian events monitor and summarize newly discovered URLs.”
MCP is useful when an agent should collect current event data before drafting content or planning a trip.
Tips for better results
- Prefer stable ToDoCanada discovery URLs over copied tracking links.
- Combine several sources in one run to deduplicate across pages.
- Keep detail enrichment off for fast discovery scans.
- Enable detail enrichment for publication-ready records.
- Schedule collection frequently enough for your editorial cycle.
- Use
eventUrlas the durable external key in downstream systems. - Preserve
sourceUrlwhen auditing where an event was discovered. - Treat missing optional fields as “not published,” not as extraction errors.
Data quality notes
ToDoCanada controls source availability and structured-data quality. Date formats can represent dates or full date-times. Recurring and multi-day events may be modeled differently by individual pages.
The Actor preserves source date values rather than guessing unavailable times. Address country codes and external ticket links are also preserved as published.
Troubleshooting
Why did the run find no events?
Confirm the URL is public, belongs to todocanada.ca, and currently contains event structured data. Editorial pages without event listings cannot produce records.
Why are some fields missing?
Fields are optional when the source does not publish them. Try includeDetails: true to inspect the canonical event page.
Why did I receive fewer events than expected?
Canonical deduplication may merge events repeated across sources. The page may also contain fewer structured events than visible editorial links.
Why is the run slower with detail pages?
Detail enrichment performs an additional HTTP request for each event.
Legality
This Actor extracts publicly available pages. You are responsible for complying with applicable laws, ToDoCanada terms, database rights, copyright, privacy requirements, and your intended use.
Avoid collecting personal data unnecessarily. Respect reasonable request volumes and do not republish protected descriptions or images without appropriate rights.
Responsible use
- Collect only data needed for a legitimate purpose.
- Keep schedules proportionate to how often event pages change.
- Attribute or link to original event pages where appropriate.
- Verify critical dates and ticket details before publication.
- Honor takedown, correction, and rights-holder requests.
FAQ
Does it require a ToDoCanada account?
No. It reads public pages.
Can it scrape several Canadian cities?
Yes. Add multiple city or discovery URLs to startUrls.
Can it scrape an individual event?
Yes. Supply the canonical ToDoCanada event URL.
Does it download images?
It returns image URLs when published; it does not download binary image files.
Can it detect free events?
It returns isFree from structured source signals and explicit zero/free price values.
Can I export CSV or Excel?
Yes. Use the dataset export controls or API.
Can I run it on a schedule?
Yes. Use Apify schedules and optionally webhooks.
Does it remove expired events later?
Each run reflects its current input pages. Handle historical retention and deletion in your downstream system.
Related scrapers and workflows
Explore other public web data tools from automation-lab. Combine event extraction with travel, venue, maps, or content workflows when those Actors fit your use case.
Support
If a valid public ToDoCanada page produces no events, open an Actor issue and include:
- The input URL
- Approximate run time
- Run ID
- Expected event example
- Whether detail enrichment was enabled
That evidence helps reproduce source changes without exposing private downstream data.