Canadian Trademarks Scraper
Pricing
from $3.36 / 1,000 trademark exporteds
Canadian Trademarks Scraper
Search official Canadian trademarks by mark, owner or application and registration identifiers. Export status, Nice classes, owner, goods and services, dates and source links for clearance research and portfolio monitoring.
Pricing
from $3.36 / 1,000 trademark exporteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search Canadian trademarks in the official Canadian Trademarks Database and export structured application records. Look up a mark, current owner, application number or registration number, then optionally include public owner details, goods and services, filing dates and registration dates.
Built for trademark professionals, brand owners and research teams preparing clearance research or comparing portfolio snapshots. This is a public-record extraction tool, not a legal opinion or a guarantee that a proposed mark is available.
What does this Actor do?
The Actor queries the official CIPO search service at ised-isde.canada.ca. Each exported row represents one unique application. It preserves the official status text and Nice classes and provides a link back to the original record.
Choose a single query and search field per run. Detail enrichment is enabled by default. Turn it off when you only need fast application, mark, status and class lookup.
Who is it for?
Trademark professionals preparing record reviews, brand owners checking Canadian portfolios, and data teams joining register snapshots to internal brand inventories. Results require human review; this tool does not determine rights or legal availability.
Why use it?
- Move repeat searches into consistent JSON, CSV or Excel exports.
- Keep application identifiers as strings, preserving leading zeroes.
- Compare status and owner snapshots using application number as the stable key.
- Retain official links and retrieval timestamps for source review.
- Control the number of exported records and optional detail requests.
No account, cookies, API key for the source, browser or proxy configuration is required. Your Apify token is needed only when invoking the Actor through the Apify API.
Getting started
- Enter a query, such as
maple. - Choose trademark text, current owner, application number or registration number.
- Set
maxItemsto the maximum number of records to export. - Keep
includeDetailsenabled for owner, dates and goods/services. - Run the Actor and open the dataset tab.
- Download JSON, CSV or Excel, or retrieve the dataset through the API.
{"query": "maple","searchField": "mark","maxItems": 10,"includeDetails": true}
Search Canadian trademarks
The mark and owner fields use the official search engine's word/query semantics. They are not a guaranteed literal substring search or whole-field equality check. Case, token handling, ranking and query operators are controlled by CIPO. Inspect returned records before treating a query as a legal clearance search.
For exact application lookup, use all seven digits, including leading zeroes where applicable, and retain any division suffix (for example 2075108-01):
{"query":"1767735","searchField":"applicationNumber","maxItems":1}
For registration lookup:
{"query":"TMA1013413","searchField":"registrationNumber","maxItems":1}
For current owner search:
{"query":"MAPLE Business Council","searchField":"owner","maxItems":10}
Input parameters
| Parameter | Default | Behavior |
|---|---|---|
query | Required | One query, 1–200 characters after outer whitespace trimming. |
searchField | mark | mark, owner, applicationNumber or registrationNumber. |
maxItems | 10 | Global maximum unique applications, 1–1000. Zero/unlimited is not supported. |
includeDetails | true | Enrich each accepted record from its official English detail page. |
Unsupported fields fail validation; status and Nice-class filters are not exposed. Export classes/status and filter downstream, or use a more specific supported query. The Actor does not combine multiple search fields in one run.
The source receives the requested result cap. Deduplication occurs by application number; duplicate/rejected hits are not refilled. Source ranking applies. When totalFound exceeds maxItems, the dataset is a capped snapshot, not an exhaustive export. There is no promise of pagination beyond the official 1000-result cap.
Extracted data
| Field | Meaning |
|---|---|
applicationNumber | Source identifier, including leading zeroes and any division suffix such as -01, retained as a string. |
mark | Official trademark text. |
status | Current CIPO status description. |
markType | Word, design, standard characters or other source type. |
niceClasses | List of source Nice class numbers. |
registrationNumber | Registration identifier when present in details. |
owner | Public registered owner/applicant and address when present. |
filingDate | Filing date from details, when present. |
registrationDate | Registration date from details, when present. |
expiryDate | Registration expiry date from details, when present. |
goodsAndServices | Public statements with source class labels, when present. |
detailsIncluded | Whether requested enrichment completed. |
sourceUrl | Official English record URL. |
query, searchField | Input context for downstream tracking. |
totalFound | Official total matches before the export cap. |
scrapedAt | ISO retrieval timestamp. |
Detail fields are null when details are disabled or when the source does not publish the value. An empty class list is possible for older or special records. Goods/services are source text, not an AI classification or summary.
Output example
A verified public record returned by application lookup, with owner text shortened here for readability:
{"applicationNumber": "1767735","mark": "MAPLE","status": "REGISTERED","markType": "Word","niceClasses": [35],"registrationNumber": "TMA1013413","owner": "MAPLE Business Council, a California corporation ...","filingDate": "2016-02-12","registrationDate": "2019-01-21","expiryDate": "2034-01-21","goodsAndServices": "Services (Nice class & Statement): 35 (1) Services for promoting and provision of foreign trade information ...","detailsIncluded": true,"sourceUrl": "https://ised-isde.canada.ca/cipo/trademark-search/1767735?lang=eng","query": "1767735","searchField": "applicationNumber","totalFound": 1,"scrapedAt": "2026-10-23T15:20:00.000Z"}
The statements above are abbreviated for documentation only; the Actor exports the parsed source statements, not these ellipses.
How much does it cost to export Canadian trademarks?
Pay-per-event pricing includes a $0.005 start fee per valid run plus a fee for each unique trademark exported. Optional public detail enrichment has no separate event charge. No item charge is issued for empty matches, duplicates or records that fail parsing.
| Apify tier | Per trademark |
|---|---|
| FREE | $0.00644 |
| BRONZE | $0.0056 |
| SILVER | $0.004368 |
| GOLD | $0.00336 |
| PLATINUM | $0.00336 |
| DIAMOND | $0.00336 |
BRONZE total-run examples including one start fee: n=1 → $0.0106; n=10 → $0.061; n=100 → $0.565. A valid search with no matches incurs only the start fee. Invalid input fails before the start charge. Apify displays the applicable tier and spending limit; verify it before running. These are Actor event prices, not a claim that all Apify subscription or platform usage is included.
Reliability and limits
Search requests use structured official JSON; details use public English HTML. Detail requests are sequential to limit source load and memory. Transient network errors, HTTP 429 and 5xx receive up to three attempts with bounded backoff. Other HTTP errors and unexpected content fail clearly.
If an upstream error occurs after some rows were exported, those rows remain partial output and may have been charged. A failed run is not a completed full export. A legitimate no-result search succeeds with an empty dataset. No CAPTCHA-solving, signed-in records, images, document downloads or paid proxy fallback is included.
For broad searches, increase the Actor timeout if needed. The default is 300 seconds; 1000 detailed records may require longer depending on source response time. Narrow queries improve relevance and reduce work. totalFound measures source matches, not guaranteed accessible/exported records.
Integrations and recurring monitoring
Schedule repeat searches on Apify, then send the dataset to a spreadsheet, database or a webhook consumer. Compare applicationNumber, status, owner and dates against your previous snapshot. Store snapshots in your own database if you need historical changes.
The Actor itself does not maintain watch state, send alerts, determine similarity risk or declare legal availability. Scheduling and change detection are downstream workflows. Export untransformed JSON for nested niceClasses; use CSV or Excel for review.
API access
Start a run once and retain its returned run ID and storage IDs. Poll that same run until terminal, then read the dataset. Never restart merely to check status.
curl -X POST \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"query":"maple","maxItems":10,"includeDetails":true}' \'https://api.apify.com/v2/acts/automation-lab~canadian-trademarks-database-search/runs'
JavaScript with the official client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/canadian-trademarks-database-search').call({ query: 'maple', maxItems: 10, includeDetails: true });const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 10 });console.log(items);
Python:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/canadian-trademarks-database-search').call(run_input={'query': 'maple', 'maxItems': 10, 'includeDetails': True})rows = client.dataset(run['defaultDatasetId']).list_items(limit=10).itemsprint(rows)
MCP use
Select the stable Actor-specific tool set:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/canadian-trademarks-database-search"
Claude Desktop, Cursor and VS Code users can use equivalent configuration in clients supporting HTTP MCP:
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/canadian-trademarks-database-search"}}}
Authenticate using the client's supported Apify authorization. Discover actual tool names and argument schemas with tools/list. Actor selection also exposes run, dataset, key-value-store and abort helpers; discovery alone is not permission to execute them.
Example prompt: “Search Canadian trademarks for maple, export at most 10 records with public details, and show application numbers, status and source links. Do not give a legal clearance opinion.”
Start once, retain the returned run ID, and follow that same run. call-actor may wait at most 45 seconds; configure the client timeout above its selected wait plus transport margin. For nonterminal runs, check get-actor-run with bounded 2/4/8-second backoff capped at 10 seconds and a total 120-second deadline. At deadline report pending with the run ID. On client timeout recover the known run, never blindly start another.
After success, read bounded get-dataset-items pages of 20 source rows using explicit offset, limit and needed fields. A suggested consumer budget is 100 rows or 64 KiB of serialized UTF-8 results admitted to model context, whichever comes first. Enforce the byte ceiling host-side, omit/summarize oversize rows with disclosure, and report continuation offsets and partial/truncated status. Clients without interception cannot guarantee a byte ceiling. Keep complete exports outside model context. These are consumer-context limits, not Actor collection limits; no universal token-saving claim is made.
Legality and responsible use
This Actor is independent and is not affiliated with or endorsed by CIPO or the Government of Canada. Review official records and consult qualified counsel for clearance decisions. Follow source terms and applicable data-protection obligations. Public owner addresses can contain personal data: collect and retain only what your lawful workflow requires.
Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. Do not submit confidential search terms or secrets that your workflow is not authorized to process. The Actor uses no AI at runtime. Apify stores datasets, input and logs under your account's retention settings; delete them through Apify storage controls when no longer required. No separate business cache is maintained. Source queries go to CIPO; sanitized failure diagnostics go to our private GlitchTip instance. For assistance, open an issue on this Actor's Apify page with the run ID, excluding secrets.
FAQ and troubleshooting
Does a matching record mean infringement? No. This is data extraction, not a legal determination or risk score.
Why did I receive fewer records than totalFound? maxItems, source ranking, duplicate removal and the official cap restrict the export. Use narrower queries; do not assume exhaustive register coverage.
Why are owner or goods/services null? Detail enrichment may be disabled, or the public record may omit the field. Failed enrichment fails the run rather than silently reporting null as success.
Why did my run fail? Check the run log for input validation, HTTP status or source-shape errors. Correct malformed identifiers. For temporary source errors, retry later; avoid repeated immediate runs.
Can this watch new filings or send alerts? Not by itself. Schedule repeated snapshots and compare them downstream. Historical revisions and built-in watch state are not included.
Related Actors
For dispute research rather than Canadian application clearance, see our USPTO TTAB Proceedings Search. It covers US dispute proceedings, not this Canadian register. Use separate workflows for those different jurisdictions and record types.