NPPA Brand API
Read one pack's price record: MRP, company, pack, price-control status and the notified ceiling rows with tax and SO.
Sendsku_idorbrandorsku
Returnsmrpbrandceiling_priceceiling_pricescompanycomposition
India's notified medicine ceiling prices, brand MRPs and substitutes, straight from NPPA.
What each one takes and what it returns. Open one for a real response, every input and every field.
Read one pack's price record: MRP, company, pack, price-control status and the notified ceiling rows with tax and SO.
Sendsku_idorbrandorsku
Returnsmrpbrandceiling_priceceiling_pricescompanycomposition
List other brands of the same composition, each with its MRP and how its per-unit price compares with this pack.
Sendsku_idorbrandorsku
Returnsbrandpageskusubstitutestotal
List every brand and pack of a formulation with MRP, ceiling price, company and price-control status.
Sendformulation
Returnsmrpceiling_pricecompanycompositioncurrencydosage_form
Read every notified strength, dosage form and pricing unit of one formulation, with its SO number and date.
Sendformulation
Returnsceiling_pricecurrencydosage_formformulationso_dateso_number
Read every pack of one medicine brand: MRP, MRP per unit, the applicable ceiling price and price-control status.
Sendquery
Returnsitemsmatched_brandpagetotal
Search India's notified NPPA ceiling prices by formulation name, paged, with the SO number and date on every row.
Sendquery
Returnsceiling_pricecurrencydosage_formformulationso_dateso_number
One request shape for every NPPA endpoint: the endpoint ID and its input. No SDK needed.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "nppa.brand.get", "input": { "sku_id": "1521018101@84705@101124596@3755@101006@202166" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "nppa.brand.get", "input": { "sku_id": "1521018101@84705@101124596@3755@101006@202166" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "nppa.brand.get", "input": { "sku_id": "1521018101@84705@101124596@3755@101006@202166" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
{ "mrp": 14.17, "brand": "DOLO", "ceiling_price": 0.93, "company": "MICRO LABS LTD", "composition": "PARACETAMOL TABLET 500 MG", "currency": "INR", "dosage_form": "TABLET", "mrp_per_unit": 0.94, "pack_size": "15 TABLET", "price_controlled": true, "price_month": "Aug-2026", "sku": "DOLO 500 MG TABLET 15", "source_url": "https://nppaipdms.gov.in/NPPA/rest/brandDataTableNew?brandId=101124596&dosageId=0&strengthId=0", "ceiling_prices": [ { "amount": 0.93, "so_date": "2026-03-25", "so_number": "1575(E)", "tax_percent": 12, "unit": "1 Tablet" } ]}
https://data.upscrape.com/mcp
With Upscrape, get the NPPA brand for sku id "1521018101@84705@101124596@3755@101006@202166". Tell me what it costs before you run it, then show the results as a table.
With Upscrape, get the NPPA brand substitutes for sku id "1521018101@84705@101124596@3755@101006@202166". Tell me what it costs before you run it, then show the results as a table.
The short answers. The docs have the long ones.
Brand, brand substitutes, formulation brands, formulation, brands search and formulations search. Each is its own endpoint with a published input schema, and the response is JSON.
Every NPPA endpoint costs 1 credit per successful call. You buy credits once, with no subscription, and paid credits never expire. New accounts get free credits to try it.
No. Upscrape reads the pages NPPA shows to any visitor, so you send the input the endpoint asks for and get the data back. Nothing runs on your account, and you share no password or cookie.
Yes. Connect any MCP client to the Upscrape MCP server with OAuth or an API key. The agent finds the NPPA endpoint, checks its price and runs it with the same credits as the REST API.
Upscrape reads public pages only and needs no login. How you use the data is yours to decide under the laws that apply to you; we sign a data processing agreement for your legal review.
We fix the endpoint. Your request and the response fields stay the same.
Up to 100 free credits to start, no card needed.