Netmeds Products Search API
Search Netmeds medicines and health products, or filter by category, brand, price or discount, with price, MRP, pack and stock.
- 1 credit per call
- Failed calls are free
- Updated
- netmeds.search.products
{ "has_more": true, "next_page": 2, "page": 1, "total_count": 36, "items": [ { "name": "Paracip 500mg Tablet 10'S", "price": 6.76, "mrp": 9.65, "availability_status": "A", "brand": "PARACIP", "composition": "Paracetamol 500 mg", "country_of_origin": "India", "currency": "INR", "description": "categoryNameLevel3-Fever-Ana; genericName-Paracetamol; brandFilter-; marketerName-Cipla Ltd (Generics); categoryNameLevel2-Analgesics (Non-…", "discount_label": "30% OFF", "discount_percent": 30, "generic_dosage_id": "31588", "generic_name": "Paracetamol", "hsn_code": "30049069", "id": "8232799", "in_stock": true, "item_code": "369513", "item_type": "standard", "manufacturer": "Cipla Ltd (Generics)", "marketer": "Cipla Ltd (Generics)", "net_quantity": "1", "pack_size": "10 Tablet(s) in a Strip", "rx_required": false, "schedule": "NP", "slug": "paracip-500mg-tablet-10s-lui1z1-8232799", "stock_quantity": 114, "url": "https://www.netmeds.com/product/paracip-500mg-tablet-10s-lui1z1-8232799", "local": { "in_stock": false, "serviceable": false }, "categories": [ "Fever-Ana" ], "images": [], "sizes": [ "10" ] }, { "name": "Paracetamol 500mg Tablet 10'S", "price": 7.57, "mrp": 9.71, "availability_status": "A", "brand": "PARACETAMOL", "country_of_origin": "India", "currency": "INR", "description": "categoryNameLevel3-Pain relief-Ano; genericName-Paracetamol; brandFilter-; marketerName-Cipla Ltd (Generics); categoryNameLevel2-Analgesics…", "discount_label": "22% OFF", "discount_percent": 22, "generic_dosage_id": "31588", "generic_name": "Paracetamol", "hsn_code": "30049061", "id": "8520913", "in_stock": true, "item_code": "813383", "item_type": "standard", "manufacturer": "Cipla Ltd (Generics)", "marketer": "Cipla Ltd (Generics)", "pack_size": "10 Tablet(s) in a Strip", "rx_required": false, "schedule": "NP", "stock_quantity": 1136, "local": { "price": 7.57, "mrp": 9.71, "currency": "INR", "delivery_max": "2026-10-26T18:02:29Z", "delivery_min": "2026-10-25T18:02:29Z", "in_stock": true, "seller": "Netmeds", "serviceable": true, "stock_quantity": 965, "store": "Noida" }, "categories": [ "Pain relief-Ano" ], "images": [], "sizes": [ "10" ] } ]}
| # | Name | Price | Mrp | Availability status | Brand | Composition | Country of origin | Currency | Description | Discount label |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Paracip 500mg Tablet 10'S | 6.76 | 9.65 | A | PARACIP | Paracetamol 500 mg | India | INR | categoryNameLevel3-Fever-Ana; genericName-Paracetamol; brandFil… | 30% OFF |
| 2 | Paracetamol 500mg Tablet 10'S | 7.57 | 9.71 | A | PARACETAMOL | India | INR | categoryNameLevel3-Pain relief-Ano; genericName-Paracetamol; br… | 22% OFF |
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| filter | object | one of | One filter. The public search route accepts exactly one filter per request. | |
| query | string | one of | Medicine, brand, salt or health product to search for. It may be empty only when a filter is set. | dolo 650 |
| limit | integer | no | Alias for page_size (1 to 20). From 1 to 20. | |
| page | integer | no | 1-based page to read. One call reads only this page; pass next_page from the answer to continue. At least 1. Default: 1. |
|
| page_size | integer | no | Records in this one page, 1 to 20 (default 20). From 1 to 20. Default: 20. |
3 |
| pincode | string | no | Indian PIN code; prices the returned records locally. | 110001 |
| sort | string | no | Sort order for returned results. Allowed values: popular, price_asc, price_dsc, discount_asc, discount_dsc, relevance. Default: popular. |
price_asc |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | Example |
|---|---|---|
| items[].name | string | Paracip 500mg Tablet 10'S |
| items[].price | number | 6.76 |
| items[].mrp | number | 9.65 |
| items[].availability_status | string | A |
| items[].brand | string | PARACIP |
| items[].categories | array | Fever-Ana |
| items[].composition | string | Paracetamol 500 mg |
| items[].country_of_origin | string | India |
| items[].currency | string | INR |
| items[].description | string | categoryNameLevel3-Fever-Ana; genericName-Paracetamol; brandFil… |
| items[].discount_label | string | 30% OFF |
| items[].discount_percent | integer | 30 |
| items[].generic_dosage_id | string | 31588 |
| items[].generic_name | string | Paracetamol |
| items[].hsn_code | string | 30049069 |
| items[].id | string | 8232799 |
| items[].images | array | empty in this sample |
| items[].in_stock | boolean | true |
| items[].item_code | string | 369513 |
| items[].item_type | string | standard |
| items[].local | object | 2 fields |
| items[].local.in_stock | boolean | false |
| items[].local.serviceable | boolean | false |
| items[].manufacturer | string | Cipla Ltd (Generics) |
| items[].marketer | string | Cipla Ltd (Generics) |
| items[].net_quantity | string | 1 |
| items[].pack_size | string | 10 Tablet(s) in a Strip |
| items[].rx_required | boolean | false |
| items[].schedule | string | NP |
| items[].sizes | array | 10 |
| items[].slug | string | paracip-500mg-tablet-10s-lui1z1-8232799 |
| items[].stock_quantity | integer | 114 |
| items[].url | string | https://www.netmeds.com/product/paracip-500mg-tablet-10s-lui1z1… |
| has_more | boolean | true |
| items | array | 2 records |
| next_page | integer | 2 |
| page | integer | 1 |
| total_count | integer | 36 |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
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": "netmeds.search.products", "input": { "page_size": 3, "pincode": "110001", "query": "dolo 650", "sort": "price_asc" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "netmeds.search.products", "input": { "page_size": 3, "pincode": "110001", "query": "dolo 650", "sort": "price_asc" }}''')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": "netmeds.search.products", "input": { "page_size": 3, "pincode": "110001", "query": "dolo 650", "sort": "price_asc" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, get the Netmeds products search for page size "3", pincode "110001" and query "dolo 650". Tell me what it costs before you run it, then show the results as a table.
More from the Netmeds API
The same data from other platforms
Netmeds Products Search API FAQ
The short answers. The docs have the long ones.
How much does the Netmeds Products Search API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send query or filter. The input fields below list every option with its type and limits.
Do I need a Netmeds login?
No. It reads public Netmeds data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds netmeds.search.products, checks its price and runs it with the same credits as the REST API.
Your first Netmeds call is free.
Up to 100 free credits to start, no card needed.