REST API over BharatSeal's register of Indian manufacturers: search 48.5L+ companies, check a company or a GSTIN, browse products. The read-only API is public. Every call is rate-limited: anonymous callers get 60 requests an hour per IP; a free API key from /dashboard/api-keys raises that to 1,000 an hour. There is no unlimited access and bulk data is not sold or licensed.
No commission on any order. BharatSeal does not collect or hold payment for goods: buyers pay manufacturers directly.
Base URL
bharatseal.io/api/v1
Auth
Bearer API key, or none
Limits
60/hr per IP · 1,000/hr per key
Calls without a key are limited to 60 an hour per IP. For 1,000 an hour, create a free API key and send it as a header.
Mint and revoke keys at Dashboard → API keys (free, up to 5 active keys). The secret is shown once; only a hash is stored. Every call, with or without a key, is counted against a limit.
Removed on 15 Sep 2026, with no deprecation window: isVerified, trustScore, verified, trust_score, confidence_score, government_verified, trust_tier. Each named a claim BharatSeal had not checked.
/api/v1/suppliersSearch manufacturers. Params: q (name or CIN), state (2-letter code), industry (2-digit NIC division), verified_only (ownership.proven only), limit (≤100), cursor. Pagination is capped at 10,000 results per query.
Example
curl "https://www.bharatseal.io/api/v1/suppliers?q=ceramic&state=GJ&limit=5"Response
{ "schema_version": "2026-10", "hits": [{ "slug": "...", "name": "...", "ownership": { "proven": false, "method": null, "checked_on": null }, "facts": [...], "msmeRegister": "uam", ... }], "total": 9476, "nextCursor": "eyJvZmZzZXQiOjV9" }/api/v1/suppliers/{slug}One supplier by its BharatSeal slug (the URL path of its public profile): identifiers, ownership, facts and msmeRegister.
Example
curl "https://www.bharatseal.io/api/v1/suppliers/tata-steel-ltd-l27100mh1907plc000260"Response
{ "schema_version": "2026-10", "slug": "...", "name": "...", "cin": "...", "gstin": null, "ownership": {...}, "facts": [{ "key": "cin", "source": "MCA", "state": "on_record", "value": "...", "as_of": null }, ...], "identifiers": [...], "msmeRegister": null }/api/v1/verifyCheck a company by name, GSTIN, CIN or Udyam number: the same lookup as bharatseal.io/verify. Each result carries ownership, facts and the registers with a record on file.
Example
curl "https://www.bharatseal.io/api/v1/verify?q=Tata%20Steel"Response
{ "schema_version": "2026-10", "query_kind": "name", "results": [{ "name": "TATA STEEL LIMITED", "profile_url": "...", "ownership": {...}, "facts": [...], "registries": [...] }] }/api/v1/gstin/{gstin}The GSTN registration status BharatSeal last read for a 15-character GSTIN, with the date it was read, the government legal name, state code and the linked supplier (with its ownership) when listed. Not a live GSTN call.
Example
curl "https://www.bharatseal.io/api/v1/gstin/27AAACT2727Q1ZW"Response
{ "schema_version": "2026-10", "gstin": "...", "status": "Active", "legalName": "...", "stateCode": "27", "lastChecked": "...", "supplier": { "slug": "...", "url": "...", "ownership": {...} } }/api/v1/productsActive, moderated listings with the seller's ownership and facts and each row's listing_source. Params: page, per (≤500), nicDiv, updated_since.
Example
curl "https://www.bharatseal.io/api/v1/products?nicDiv=23&per=20"Response
{ "schema_version": "2026-10", "items": [{ "title": "...", "listing_source": "manufacturer", "price": {...}, "seller": { "ownership": {...}, "facts": [...] } }], "page": 1, "per": 20, "next_page": "..." }/api/v1/openapi.jsonMachine-readable OpenAPI 3.1 spec of this API; point your codegen or agent at it.
Example
curl "https://www.bharatseal.io/api/v1/openapi.json"Response
{ "openapi": "3.1.0", "info": { "title": "BharatSeal Public API", "version": "2026-10" }, ... }Every response carries X-RateLimit-* headers. Every tier has a limit. Supplier search pagination is capped at 10,000 results per query. BharatSeal does not sell or license bulk data. Attribution appreciated: link to the supplier's BharatSeal profile when you display this data.
Point it at the OpenAPI spec, llms.txt or the MCP server; all three are maintained for machine consumption and share these keys and limits. The /verify endpoint answers "is this Indian company on record, and did it prove it is the manufacturer?" with the register named in every fact.
Your first 60 calls an hour work without a key. Mint one when you need 1,000.