↑ ↓ to move ↵ to open
NPPA API reference

NPPA Formulations Search

nppa.search.formulations

Search India's notified NPPA ceiling prices by formulation name, paged, with the SO number and date on every row.

At a glance

Endpoint ID
nppa.search.formulations
Price
1 credit per call; failed calls are free
Runs for up to
60 seconds
Request
POST /execute
Run an endpoint
MCP tool when pinned
nppa__search__formulations
Pin tools
OpenAPI
openapi.json
Download

Request

Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.

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.search.formulations",  "input": {    "limit": 5,    "query": "METFORMIN"  }}'

Input

FieldTypeRequiredWhat it doesExample
query string yes Formulation name to search, for example "METFORMIN". Matched against the name NPPA files the price under, not the display name in its scheduled list; use nppa.formulation.get for that. METFORMIN
limit integer no Rows per page. From 1 to 100. Default: 20. 5
page integer no Page of matching rows to return, starting at 1. At least 1. Default: 1.
so_number string no Keep only one gazette notification, for example "1575(E)". Case and spacing are ignored.
sort string no Row order: formulation name (default), cheapest ceiling price first, or most expensive first. Allowed values: name, price_low, price_high. Default: name. name · price_low · price_high

Response

A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.

This is results[0].data from a real run:

results[0].data
{  "has_more": false,  "page": 1,  "total": 3,  "items": [    {      "ceiling_price": 4.15,      "currency": "INR",      "dosage_form": "MODIFIED RELEASE TABLET",      "formulation": "METFORMIN",      "so_date": "2026-03-25",      "so_number": "1575(E)",      "source_url": "https://nppaipdms.gov.in/NPPA/rest/schFormDataTableNew?dosageId=0&schFormulationId=0&strengthId=0",      "strength": "1000 MG",      "unit": "1 Tablet"    },    {      "ceiling_price": 3.57,      "currency": "INR",      "dosage_form": "TABLET",      "formulation": "METFORMIN",      "so_date": "2026-03-25",      "so_number": "1575(E)",      "source_url": "https://nppaipdms.gov.in/NPPA/rest/schFormDataTableNew?dosageId=0&schFormulationId=0&strengthId=0",      "strength": "1000 MG",      "unit": "1 Tablet"    }  ]}

Fields

FieldTypeExample
items[].ceiling_price number 4.15
items[].currency string INR
items[].dosage_form string MODIFIED RELEASE TABLET
items[].formulation string METFORMIN
items[].so_date string 2026-03-25
items[].so_number string 1575(E)
items[].source_url string https://nppaipdms.gov.in/NPPA/rest/schFormDataTableNew?dosageId…
items[].strength string 1000 MG
items[].unit string 1 Tablet
has_more boolean false
items array 3 records
page integer 1
total integer 3

If a call fails

A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.

Other NPPA endpoints

Something missing or unclear? Ask the team that builds the NPPA endpoints.