Canadian Trademarks Scraper avatar

Canadian Trademarks Scraper

Pricing

from $3.36 / 1,000 trademark exporteds

Go to Apify Store
Canadian Trademarks Scraper

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

Automation Lab

Maintained by Community

Actor 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

  1. Enter a query, such as maple.
  2. Choose trademark text, current owner, application number or registration number.
  3. Set maxItems to the maximum number of records to export.
  4. Keep includeDetails enabled for owner, dates and goods/services.
  5. Run the Actor and open the dataset tab.
  6. 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

ParameterDefaultBehavior
queryRequiredOne query, 1–200 characters after outer whitespace trimming.
searchFieldmarkmark, owner, applicationNumber or registrationNumber.
maxItems10Global maximum unique applications, 1–1000. Zero/unlimited is not supported.
includeDetailstrueEnrich 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

FieldMeaning
applicationNumberSource identifier, including leading zeroes and any division suffix such as -01, retained as a string.
markOfficial trademark text.
statusCurrent CIPO status description.
markTypeWord, design, standard characters or other source type.
niceClassesList of source Nice class numbers.
registrationNumberRegistration identifier when present in details.
ownerPublic registered owner/applicant and address when present.
filingDateFiling date from details, when present.
registrationDateRegistration date from details, when present.
expiryDateRegistration expiry date from details, when present.
goodsAndServicesPublic statements with source class labels, when present.
detailsIncludedWhether requested enrichment completed.
sourceUrlOfficial English record URL.
query, searchFieldInput context for downstream tracking.
totalFoundOfficial total matches before the export cap.
scrapedAtISO 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 tierPer 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 os
from apify_client import ApifyClient
client = 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).items
print(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.

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.