Trademarx APItrademarx.in ↗
Search Indian trademarks by name or company, browse official trademark journal issues from the India Trademark Registry. 4 endpoints, paginated results.
What is the Trademarx API?
The Trademarx.in API provides 4 endpoints for querying the India Trademark Registry — search trademarks by name or proprietor, and browse official journal publications. The search_trademarks endpoint returns up to 100 records per query, each including application number, NICE class, proprietor name, and filing date. The search_by_company endpoint lets you retrieve all trademarks filed under a specific company or proprietor name with full pagination support.
curl -X GET 'https://api.parse.bot/scraper/5e680419-8602-461e-9e29-3e9d2b7fdc01/search_trademarks?query=Nike' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace trademarx-in-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Trademarx India API — search trademarks, browse journals."""
from parse_apis.trademarx_in_api import Trademarx, InputFormatInvalid
client = Trademarx()
# Search trademarks by name, cap total items fetched.
for tm in client.trademarks.search(query="Nike", limit=5):
print(tm.name, f"class={tm.tm_class}", f"app#{tm.application_no}")
# Search by company name to find proprietor filings.
hit = client.trademarks.search_by_company(company="Reliance", limit=1).first()
if hit is not None:
print(hit.name, hit.proprietor_name, hit.application_date)
# Discover journals then browse trademarks in the latest issue.
journal = client.journals.list(limit=1).first()
if journal is not None:
print(f"Journal {journal.journal_no}: {journal.trademark_count} trademarks")
# Navigate into the journal's trademarks sub-resource.
try:
for tm in client.journal(journal_no=journal.journal_no).trademarks.list(size=5, limit=5):
print(tm.name, tm.proprietor_name, tm.head_office)
except InputFormatInvalid as e:
print(f"Invalid journal input: {e.message}")
print("exercised: trademarks.search / trademarks.search_by_company / journals.list / journal.trademarks.list")
Search trademarks by name with optional NICE class filter. Returns up to 100 matching trademark records from the India Trademark Registry. Results include trademark name, application number, class, proprietor, and filing date.
| Param | Type | Description |
|---|---|---|
| class | integer | NICE classification number to filter results (1-45, or 99 for multi-class). Omitting returns all classes. |
| queryrequired | string | Trademark name to search for (e.g. 'Nike', 'Apple'). |
{
"type": "object",
"fields": {
"query": "The search query used",
"results": "Array of trademark records",
"class_filter": "The class filter applied, or null if not filtered",
"total_results": "Number of results returned"
},
"sample": {
"data": {
"query": "Nike",
"results": [
{
"url": "/trademarks/nike-aeroloft-class-25-4481342",
"name": "NIKE AEROLOFT",
"type": null,
"details": "Apparel, namely, jackets, coats, vests.",
"img_url": null,
"tm_class": 25,
"application_no": 4481342,
"proprietor_name": "NIKE INNOVATE C.V.",
"application_date": "2020-03-23",
"trademark_status": null
}
],
"class_filter": "25",
"total_results": 23
},
"status": "success"
}
}About the Trademarx API
Trademark Name and Company Search
The search_trademarks endpoint accepts a query string and an optional class integer (1–45, or 99 for multi-class) to filter results by NICE classification. Each record in the results array includes the trademark name, application number, class, proprietor, and filing date. The response also surfaces total_results and the class_filter applied. To search by owner rather than mark name, search_by_company matches proprietor names containing the supplied company string, returning paginated records with total, page, and size fields.
Journal Publications
The India Trademark Registry publishes periodic journal issues listing newly filed and registered marks. list_journals returns a reverse-chronological array of journal summaries — each entry carries journal_no, trademark_count, and published_date. Pagination is controlled via zero-based page and size (1–100) parameters. Once you have a journal number, browse_journal retrieves the full trademark records within that issue, adding agent, status, and usage information beyond what the name-search endpoints return.
Response Fields and Pagination
All four endpoints use the same zero-based pagination convention (page, size). browse_journal additionally returns a total field representing the full count of trademarks in that journal issue, useful for building paginated UIs or bulk exports. The trademarks arrays in browse_journal and search_by_company carry the most complete records, including agent details and trademark status alongside the core fields shared across endpoints.
The Trademarx API is a managed, monitored endpoint for trademarx.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when trademarx.in changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official trademarx.in API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Check whether a proposed brand name is already registered under a specific NICE class before filing.
- Audit all trademark filings associated with a company like 'Tata' or 'Reliance Industries' using search_by_company.
- Monitor newly published trademarks in each registry journal issue to track competitor filings.
- Build a trademark watch service that alerts users when a similar name appears in new journal publications.
- Retrieve filing dates and application numbers for due-diligence research during mergers or acquisitions.
- Enumerate all multi-class (class 99) filings to identify broadly registered marks.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the India Trademark Registry offer an official developer API?+
What does browse_journal return beyond what search_trademarks returns?+
agent, status, and usage information for each trademark record, in addition to the name, application number, class, and proprietor fields common to both endpoints. It also returns a total count for the full journal issue, enabling accurate pagination.Is there a limit on how many results search_trademarks returns?+
total_results field reflects how many were returned, capped at 100. For broad queries that may match more than 100 marks, narrowing the search with the class parameter is the most effective way to reduce the result set to the most relevant records.