{"openapi":"3.1.0","info":{"title":"BharatSeal Public API","description":"BharatSeal is a register of Indian manufacturers built from government records (MCA, GSTN, Udyam and UAM, DGFT). Each profile shows where every record came from and when it was read. ownership.proven is the only verified answer. 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.","version":"2026-10","contact":{"name":"BharatSeal","url":"https://www.bharatseal.io","email":"care@bharatseal.io"},"license":{"name":"Public access with rate limits — see /terms","url":"https://www.bharatseal.io/terms"}},"servers":[{"url":"https://www.bharatseal.io","description":"Production"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Optional. 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. Anonymous: 60 requests an hour per IP. Free key: 1,000 an hour plus a monthly quota."}},"schemas":{"Ownership":{"type":"object","description":"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.","required":["proven","method","checked_on"],"properties":{"proven":{"type":"boolean"},"method":{"type":["string","null"],"enum":["gst_login","entitylocker","staff_review",null]},"checked_on":{"type":["string","null"],"format":"date"}}},"Fact":{"type":"object","description":"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.","required":["key","label","source","state","value","as_of"],"properties":{"key":{"type":"string","enum":["cin","mca_status","gstin","iec","msme","pan","employees","capital","incorporated"]},"label":{"type":"string"},"source":{"type":"string","enum":["MCA","GSTN","DGFT","Udyam","UAM","Income Tax","EPFO"]},"state":{"type":"string","enum":["on_record","not_on_record"]},"value":{"type":["string","null"],"description":"CIN, IEC or Udyam number when on record; GSTIN and PAN are withheld."},"as_of":{"type":["string","null"],"format":"date","description":"When BharatSeal last read the register, where a column records it."}}},"Supplier":{"type":"object","required":["schema_version","slug","name","isClaimed","ownership","facts","url","identifiers","basedOn","msmeRegister"],"properties":{"schema_version":{"type":"string","const":"2026-10","description":"schema_version names the response shape. Fields are removed when they were false, not deprecated; docs/contracts/CHANGELOG.md lists every change."},"slug":{"type":"string","description":"Canonical URL slug. Stable identifier across versions."},"name":{"type":"string"},"cin":{"type":["string","null"],"description":"Ministry of Corporate Affairs CIN (21 alphanumeric)."},"gstin":{"type":["string","null"],"description":"Withheld for anti-scrape/DPDP — always null."},"city":{"type":["string","null"]},"stateCode":{"type":["string","null"],"description":"ISO 3166-2 state code, e.g. 'MH'."},"stateLabel":{"type":["string","null"],"description":"Human state name, e.g. 'Maharashtra'."},"effectiveIndustry":{"type":["string","null"],"description":"Derived industry classification (NIC-2008)."},"natureOfBusiness":{"type":["string","null"]},"isClaimed":{"type":"boolean","description":"The company has claimed its profile. Not a check: see ownership."},"ownership":{"$ref":"#/components/schemas/Ownership"},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"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."},"foundingDate":{"type":["string","null"],"format":"date"},"url":{"type":"string","format":"uri"},"identifiers":{"type":"array","items":{"type":"object","required":["propertyId","value"],"properties":{"propertyId":{"type":"string","description":"Identifier scheme: IN-MCA-CIN / IN-DGFT-IEC / IN-UDYAM"},"value":{"type":"string"}}}},"basedOn":{"type":"array","description":"Government register URLs the record was read from.","items":{"type":"string","format":"uri"}},"msmeRegister":{"type":["string","null"],"enum":["udyam","uam",null],"description":"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."},"msmeRegisterNote":{"type":["string","null"],"description":"Present when msmeRegister is \"uam\": Udyog Aadhaar Memorandum (UAM) record from the MSME register that closed on 30 June 2020. Not a Udyam registration; the UAM number itself is not held."}}},"SupplierSearchResult":{"type":"object","required":["schema_version","hits","total"],"properties":{"schema_version":{"type":"string","const":"2026-10"},"hits":{"type":"array","items":{"$ref":"#/components/schemas/Supplier"}},"total":{"type":"integer"},"nextCursor":{"type":["string","null"]}}},"VerifyResult":{"type":"object","required":["name","profile_url","ownership","facts","registries"],"properties":{"name":{"type":"string"},"profile_url":{"type":"string","format":"uri"},"ownership":{"$ref":"#/components/schemas/Ownership"},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"}},"registries":{"type":"array","description":"Registers with a record on file. The GSTIN value is withheld; a UAM row carries a note and no number.","items":{"type":"object","required":["registry","record_type","on_record"],"properties":{"registry":{"type":"string","enum":["MCA","GSTN","UDYAM","UAM"]},"record_type":{"type":"string","enum":["CIN","GSTIN","UDYAM_NUMBER","UAM_RECORD"]},"record":{"type":"string"},"on_record":{"type":"boolean","const":true},"as_of":{"type":"string","format":"date"},"note":{"type":"string"}}}},"sector":{"type":["object","null"]},"location":{"type":"object"},"incorporated":{"type":["string","null"],"format":"date"},"listing_status":{"type":["string","null"]},"claimed_by_owner":{"type":"boolean"}}},"ProductFeedItem":{"type":"object","required":["id","title","listing_source","link","seller"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"listing_source":{"type":"string","enum":["manufacturer","website_read_unconfirmed"],"description":"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."},"read_from_website_on":{"type":["string","null"],"format":"date"},"description":{"type":["string","null"]},"link":{"type":"string","format":"uri"},"price":{"type":["object","null"],"description":"Absent when the listing carries no price the company stands behind."},"min_order_quantity":{"type":["integer","null"]},"lead_time_days":{"type":["integer","null"]},"seller":{"type":"object","required":["profile_url","ownership","facts"],"properties":{"profile_url":{"type":"string","format":"uri"},"location":{"type":"object"},"ownership":{"$ref":"#/components/schemas/Ownership"},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"}}}},"updated_at":{"type":["string","null"],"format":"date-time"}}},"Error":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","description":"Machine-readable: INVALID_SLUG / INVALID_GSTIN / NOT_FOUND / RATE_LIMITED / UNAUTHORIZED / PAGINATION_LIMIT / SERVER_ERROR"}}}}},"security":[{"bearerAuth":[]},{}],"paths":{"/api/v1/suppliers/{slug}":{"get":{"summary":"Fetch a single supplier by slug","operationId":"getSupplier","tags":["Suppliers"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Supplier"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/suppliers":{"get":{"summary":"Search suppliers","operationId":"searchSuppliers","tags":["Suppliers"],"parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text search over company name and CIN"},{"name":"state","in":"query","schema":{"type":"string","pattern":"^[A-Z]{2}$"},"description":"ISO state code, e.g. 'MH'"},{"name":"industry","in":"query","schema":{"type":"string","pattern":"^\\d{2}$"},"description":"Two-digit NIC-2008 division"},{"name":"verified_only","in":"query","schema":{"type":"boolean"},"description":"Only companies whose ownership.proven is true."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"From nextCursor of a prior response. Pagination is capped at 10,000 results per query."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierSearchResult"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/verify":{"get":{"summary":"Check a company by name, GSTIN, CIN or Udyam number","description":"The same lookup as bharatseal.io/verify. 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.","operationId":"verifyCompany","tags":["Verify"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":120}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["schema_version","query","query_kind","results"],"properties":{"schema_version":{"type":"string","const":"2026-10"},"query":{"type":"string"},"query_kind":{"type":"string","enum":["gstin","cin","udyam","name"]},"source":{"type":"string"},"ownership_definition":{"type":"string"},"facts_definition":{"type":"string"},"results":{"type":"array","items":{"$ref":"#/components/schemas/VerifyResult"}},"docs":{"type":"string","format":"uri"}}}}}},"400":{"description":"Query too short","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/products":{"get":{"summary":"Product feed","description":"Active, moderated listings with the seller's ownership answer and register facts. 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.","operationId":"productFeed","tags":["Products"],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"per","in":"query","schema":{"type":"integer","minimum":10,"maximum":500,"default":200}},{"name":"nicDiv","in":"query","schema":{"type":"string","pattern":"^\\d{2}$"},"description":"Two-digit NIC-2008 division"},{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["schema_version","page","per","items"],"properties":{"schema_version":{"type":"string","const":"2026-10"},"source":{"type":"string"},"page":{"type":"integer"},"per":{"type":"integer"},"total_estimated":{"type":["integer","null"]},"next_page":{"type":["string","null"],"format":"uri"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ProductFeedItem"}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/gstin/{gstin}":{"get":{"summary":"Look up the GSTN registration status BharatSeal last read for a GSTIN","description":"A register record on file with the date it was read; not a live GSTN call and not a check by BharatSeal.","operationId":"checkGstin","tags":["GSTIN"],"parameters":[{"name":"gstin","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["schema_version","gstin","status"],"properties":{"schema_version":{"type":"string","const":"2026-10"},"gstin":{"type":"string"},"status":{"type":"string","enum":["Active","Cancelled","Suspended","Provisional","Unknown"]},"legalName":{"type":["string","null"]},"stateCode":{"type":["string","null"]},"lastChecked":{"type":["string","null"],"format":"date-time","description":"When BharatSeal last read the GSTN register for this GSTIN."},"supplier":{"type":["object","null"],"properties":{"slug":{"type":"string"},"url":{"type":"string","format":"uri"},"ownership":{"$ref":"#/components/schemas/Ownership"}}}}}}}},"400":{"description":"Invalid GSTIN format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}