Developer API

BharatSeal API

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

Quickstart

# Check an Indian company (60 calls an hour without a key)
curl "https://www.bharatseal.io/api/v1/verify?q=Tata+Steel"
# Search Gujarat ceramic makers with a key (1,000 an hour)
curl -H "Authorization: Bearer bs_live_…" "https://www.bharatseal.io/api/v1/suppliers?q=ceramic&state=GJ"

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.

Authentication

Pass your API key in the Authorization header
Authorization: Bearer bs_live_your_api_key_here

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.

What the fields mean

ownership

ownership.proven is true only when the company's claim on BharatSeal proved it is the manufacturer: at claim time by a Sandbox GST login or EntityLocker check, or by BharatSeal staff reviewing uploaded documents. Registry fields are on record in government registers and are not checks by BharatSeal.

facts

facts lists the government-register records BharatSeal holds for the company: each names its register (MCA, GSTN, DGFT, Udyam, UAM, Income Tax, EPFO), whether it is on record, and the date the register was last read where known. A record on file is not a check by BharatSeal. GSTIN and PAN values are withheld.

msmeRegister

msmeRegister says which MSME register the company is on: "udyam" (a Udyam number, issued from July 2020, given in identifiers) or "uam" (a Udyog Aadhaar Memorandum record from the register that closed in June 2020; no number is held or given). null when neither is on record.

listing_source

listing_source says who wrote a product listing: "manufacturer" (entered or confirmed by the company) or "website_read_unconfirmed" (read from the company's website by a machine and not confirmed; enquiry only, and read_from_website_on gives the date). A listing copied from another directory is stripped to its name and carries no price, photo or offer.

schema_version

schema_version names the response shape. Fields are removed when they were false, not deprecated; docs/contracts/CHANGELOG.md lists every change.

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.

Endpoints

GET/api/v1/suppliers

Search 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" }
GET/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 }
GET/api/v1/verify

Check 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": [...] }] }
GET/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": {...} } }
GET/api/v1/products

Active, 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": "..." }
GET/api/v1/openapi.json

Machine-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" }, ... }

Rate limits

No key60 req/hour per IPRate-limited from the first call
Free key1,000 req/hour · 100K req/monthSelf-serve, up to 5 keys

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.

Building an AI agent?

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.

Ready to integrate?

Your first 60 calls an hour work without a key. Mint one when you need 1,000.

Get a free API key OpenAPI spec