Skip to main content

Public recall lookup

Has this batch been recalled? No credentials needed.

Look up a batch

GET https://api.dawatrack.com/partner-api/v1/recall-lookup/{gtin}/{batch_number}/

Has this batch been recalled? The one endpoint that needs no credentials.

No credentials needed Limit 60 per hour per IP address

Matches the GTIN and batch number together, because different manufacturers can use the same batch number. Never includes facility data.

recalled is true for closed recalls too. To block a sale, check for a recall with status OPEN.

For a till checking every sale, subscribe to recall webhooks and keep a local list of open recalls instead of calling this per sale.

Path parameters

  • batch_number string Required
  • gtin string Required

Example request

curl -X GET https://api.dawatrack.com/partner-api/v1/recall-lookup/06164004321562/BTH-2026-041/
import requests

response = requests.get(
    "https://api.dawatrack.com/partner-api/v1/recall-lookup/06164004321562/BTH-2026-041/",
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.dawatrack.com/partner-api/v1/recall-lookup/06164004321562/BTH-2026-041/", {
  method: "GET",
});
console.log(await response.json());

Response fields

  • supplier_name string

    Who issued it: the supplier, the regulator or the manufacturer.

  • medicine_name string

    The product's name.

  • gtin string

    The product's GS1 GTIN, as 14 digits.

  • batch_number string

    The batch or lot number.

  • all_batch_numbers array of strings Read-only

    Every batch number this recall covers - the queried batch may be any of these, not just the primary batch_number above.

  • status string
  • severity_class string
  • severity_class_display string

    The severity class, in words.

  • reason_display string

    The recall reason, in words.

  • instructions string

    What facilities should do.

  • initiated_at datetime

    When the recall was opened.

  • closed_at datetime or null

    When the recall was closed, if it is closed.

Example response

JSON
{
  "batch_number": "BTH-2026-041",
  "recalled": true,
  "recalls": [
    {
      "supplier_name": "Example Pharmaceuticals Ltd",
      "medicine_name": "Amoxicillin 500 mg capsules",
      "gtin": "06164004321562",
      "batch_number": "BTH-2026-041",
      "all_batch_numbers": [
        "BTH-2026-041"
      ],
      "status": "OPEN",
      "severity_class": "CLASS_II",
      "severity_class_display": "Class II",
      "reason_display": "Contamination",
      "instructions": "Quarantine the batch and await collection instructions.",
      "initiated_at": "2026-10-05T09:00:00Z",
      "closed_at": null
    }
  ]
}

Status codes

200OK
400The request is invalid, for example a malformed GTIN or a missing field
429Rate limit exceeded

Partner API v1. The API reference is generated from the API's own code.