· via dev.to (home feed)
Free Trademarx API opens 3.3 million Indian trademark records to developers
An IP law practice has packaged its scrape of the Indian Trade Marks Registry — over 3.3 million records — into Trademarx, a free read-only public API with simple key auth and strict rate limits.

What launched
An intellectual property law practice has opened its scrape of the Indian Trade Marks Registry to the public as a free API. According to a post on dev.to, the dataset behind Trademarx covers more than 3.3 million trademark records going back to Trade Marks Journal issue 1703; the journal itself is currently somewhere in the 2200s.
The project started as internal tooling. The firm needed to search the registry programmatically, scraped it, and later shipped an API after someone building a brand-clearance tool asked whether the data was available as a service. It wasn't, so they built one.
How the API works
The service exposes exactly two read-only GET endpoints: one that searches trademarks by name and class, and one that returns an entire Trade Marks Journal issue by number. Responses are plain JSON arrays with no wrapper object, and pagination metadata travels in headers — a total-count figure plus Link headers pointing at the next and last pages — rather than in the response body.
Authentication is a single API-key header with no expiry and no OAuth flow. Keys are issued instantly with no approval queue, the post says, and the public endpoints have open CORS so they can be called directly from browser JavaScript — though the authors warn against shipping a key in client-side code and recommend proxying through your own backend for anything real. An OpenAPI 3.1 specification is generated from the live controllers, which the authors claim keeps it from drifting out of sync with the implementation.
Data caveats developers should expect
Only three fields are guaranteed non-null: the application number, the trademark class and a canonical URL. The name field is missing for a meaningful share of the register because device and figurative marks have no word element, so the post advises keying records by application number rather than name.
The trademark status field is null for most records — not because data was dropped, but because the registry has not published a status. Where it does exist, it is free text with no fixed vocabulary, covering values like Registered, Abandoned and Formalities Chk Pass. Consumers are told to match loosely rather than switch on exact strings, and not to render a null status as "Unknown" anywhere a reader might mistake it for a legal fact.
Limits and the one condition
Use is capped at 200 requests per day per endpoint group. Page size is fixed at 20 even if you ask for more, queries can span at most 50 pages, and the deepest reachable record is 1,000 — the intended remedy for hitting that ceiling is narrowing the query rather than paging further. There is no bulk export and no write access, which the authors describe as deliberate: a free tier that also offered bulk dumps would amount to subsidising someone else's dataset business. Bulk needs are handled by email instead.
The API is free in exchange for a visible attribution link on the registered domain. Compliance is checked weekly, with a warning issued before suspension. Every response also carries a URL field pointing at the canonical page for that record, which can double as a per-result attribution link.
What scraping the registry actually took
Much of the dev.to write-up concerns the registry itself. Journal files follow two different filename conventions depending on roughly when an issue was published, with no documented boundary and no changelog; guessing wrong produces a 500 with an HTML error page instead of a 404, which can silently corrupt a parser that isn't checking content types.
A silent truncation bug initially looked like a deadlock in the crawler's concurrency logic. The real cause was an HTTP client capping response bodies at 2MB while the listing pages for certain issues needed about 2.3MB — no error, no crash, just fewer rows than existed until someone manually diffed the counts against the portal.
The captcha guarding the registry's live status lookup turned out, on inspecting what the frontend actually calls, to be a plain JSON request-response requiring no headless browser or image solving.
The authors' broader takeaway: government portals tend not to fail loudly. They hand over most of the data and leave you to discover the missing remainder on your own time.
Why it matters
Indian trademark records have largely been accessible only through a portal that resists automation, which made programmatic brand checks, watch services and IP research impractical without building (and maintaining) a fragile scraper. Trademarx removes that barrier for small-scale use cases, with an API design — header-based pagination, guaranteed key fields, an auto-generated spec — that reflects hard-won knowledge of where the underlying data is inconsistent.
The limitations define its niche. Daily caps, a 1,000-record depth ceiling, no bulk export and an attribution requirement position it for integrations and lookups rather than dataset repackaging, and the prevalence of null and free-text status values means it is a research aid rather than an authoritative legal record. All details come from the project's own announcement on dev.to, so the dataset's completeness and behaviour are as claimed by its authors rather than independently verified.
- #api
- #trademarks
- #open-data
- #india
- #developer-tools