TrademarkSearchPro API

REST API for 7.3M+ Indian trademarks, AI logo search, document downloads, and real-time change webhooks.
Your X-API-Key (stored locally, applies to all Try-It panels)
Don't have one? Sign up free, pick a plan, then create a key from the dashboard.

Authentication

Every call to /v1/... requires an API key sent in the X-API-Key header. Keys are issued from the dashboard after you activate a subscription.

# Required header on every API call X-API-Key: tmsp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Note: Keys are SHA-256-hashed in our DB. We can't recover a key if you lose it — revoke and create a new one from the dashboard.

Base URL & Errors

Production base URL:

https://api.trademarksearchpro.com/india/v1/

All responses are JSON. Error responses include error + code fields. HTTP status:

StatusMeaning
200OK
201Created
400Bad request — see error field
401Missing / invalid API key
403Subscription expired, plan doesn't include this feature
404Resource not found
429Rate limit, concurrent limit, or monthly quota exceeded
5xxOur problem — contact support@trademarksearchpro.com

Quotas & Rate Limits

Each plan includes monthly quotas tracked per resource type:

Real-time limits:

When you hit a limit, you get 429 with details in the body. Bulk endpoints charge N credits per request (e.g. POST /v1/trademarks/bulk/ with 50 app numbers charges 50 api_calls).

Webhooks

Get real-time HTTP POST notifications when trademark data changes. Register from the dashboard's Webhooks tab. We sign every delivery with HMAC-SHA256 so you can verify it came from us.

Plan-gated: Webhooks require a plan with webhook_enabled=true (Silver and Gold by default).

Event types

EventFires when…
trademark.status_changedA row appears in tradmark_status_history
trademark.alert_changedA row appears in alert_changes
trademark.opposition_filedA row appears in tbl_tm_oppositions
trademark.hearing_scheduledA row appears in tbl_tm_hearing_details
trademark.document_addedA row appears in tbl_tm_documents
trademark.proprietor_changedA proprietor_detail row updates
trademark.exam_report_addedA row appears in tbl_tm_examination_report

Verifying signatures

We send X-TMSP-Signature: sha256=<hex> on every delivery. Compute HMAC-SHA256 of the raw request body using your webhook secret (shown once when you register):

# Python import hmac, hashlib expected = hmac.new(SECRET.encode(), body, hashlib.sha256).hexdigest() if hmac.compare_digest(expected, received_sig.removeprefix('sha256=')): # ✓ trusted — process the event

Failed deliveries retry up to 3 times with 60s backoff. After 10 cumulative failures the webhook is auto-disabled and the user is emailed.