Nigeria NAFDAC Greenbook Registered Products
Pricing
from $1.00 / 1,000 product registrations
Nigeria NAFDAC Greenbook Registered Products
Every product in Nigeria's NAFDAC Greenbook (greenbook.nafdac.gov.ng) as English-keyed JSON: registration number (NRN), product, category, status, applicant, manufacturer, active ingredients, form, route, strength, pack size, ATC code, SmPC link, approval and expiry dates.
Pricing
from $1.00 / 1,000 product registrations
Rating
0.0
(0)
Developer
Aloever Dulay
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Nigeria NAFDAC Greenbook Registered Products Actor (greenbook.nafdac.gov.ng)
Every product in the NAFDAC Greenbook, the registered-product database of Nigeria's National Agency for Food and Drug Administration and Control (greenbook.nafdac.gov.ng), as clean, English JSON: NAFDAC registration number (NRN), product name, category, status, marketing category (prescription-only or over-the-counter), applicant, manufacturer (name, and country on request), active ingredients, dosage form, route, strength, pack size, composition, ATC code, a link to the SmPC (PDF), approval and expiry dates, and a link to the product page.
Categories: drugs (about 7,500 records), medical devices (about 1,100), vaccines and biologics (about 150), herbals and nutraceuticals (about 130) and veterinary products (about 90); about 9,000 in all, Active and Inactive. Counts from September 2026.
Who needs this
- Pharmacies, distributors and marketplaces checking that the products they stock or list carry a valid NAFDAC registration, or auditing a catalogue in bulk.
- Manufacturers and importers watching competitors' new approvals, and registrations (their own or others') that are about to expire.
- Market-access and regulatory consultants sizing a therapeutic area in Nigeria: which molecules are registered, by whom, made where, prescription-only or over the counter.
- Researchers and public-health analysts studying Nigeria's medicines market, for example how many antimalarial generics are registered and who makes them.
- AI agents and automations that need a stable schema rather than a search page.
Input
| Field | Type | Default | Description |
|---|---|---|---|
category | string | "" | drugs, vaccines-and-biologics, medical-devices, veterinary, herbals-and-nutraceuticals, disinfectants (none listed in September 2026), or empty for all. |
status | string | "" | Active or Inactive, or empty for both. |
productName | string | "" | Product name contains this text, e.g. paracetamol. |
ingredient | string | "" | Active ingredient or its synonym contains this text, e.g. artemether, or acetaminophen (which finds paracetamol). |
registrationNumber | string | "" | Registration number contains this text: a full NRN (A11-101363) or a prefix (A4-). |
applicant | string | "" | Applicant's company name contains this text, e.g. emzor. |
approvedSince | string | "" | Approved on or after this date (YYYY-MM-DD). |
expiringBefore | string | "" | Expiry date between today (Lagos time) and this date (YYYY-MM-DD): registrations due for renewal. |
includeManufacturer | boolean | true | Add the manufacturer's name (about 29 extra requests per run, roughly a minute). |
includeManufacturerCountry | boolean | false | Also add the manufacturer's country (one extra request, about 2 s, per distinct manufacturer in the results). |
maxItems | integer | 100 | Stop after this many registrations (1-20,000), newest approval first. |
proxyConfiguration | object | no proxy | Optional Apify Proxy; the Greenbook does not need one. |
Text filters are case-insensitive "contains" matches. Filters combine with AND.
Order. Results always come newest approval first, so an empty query gives the latest
approvals, and a daily run with approvedSince set to yesterday gives the day's new
registrations.
Output
One dataset item per registered product, newest approval first. Product names, forms,
strengths and compositions are kept as published, with HTML entities decoded, surrounding
spaces trimmed and placeholders such as NA, N/A and nil turned into null. Dates
are ISO dates (YYYY-MM-DD): the Greenbook publishes calendar dates without a time, in
West Africa Time (WAT, UTC+1). fetchedAt is a UTC timestamp. The Output tab on this page documents every field.
A real item (a drug, captured 2026-09-26 with manufacturer countries on):
{"registrationNumber": "B4-7079","productId": 12464,"productName": "AFLOTIN 80/480 TABLETS","dataQualityNote": null,"category": "Drugs","status": "Active","marketingCategory": "Over-the-counter (OTC)","applicant": { "id": 578, "name": "Ajanta Pharma Nigeria Limited" },"manufacturer": { "id": 364, "name": "Ajanta Pharma Limited", "country": "INDIA" },"activeIngredients": ["Artemether", "Lumefantrine"],"ingredientSynonym": null,"dosageForm": "Tablet","route": "Oral","strength": "80mg; 480mg","packSize": "30 x 6","composition": "Each tablet contains: Artemether 80 mg, Lumefantrine 480 mg","atcCode": "P01BF01","smpcUrl": "https://admin.greenbook.nafdac.gov.ng/uploadImage/smpc_files/2026/09/11/2026091135eff8ba-d6ad-5ff3-924a-a103c754a1b7.pdf","approvedAt": "2026-08-26","expiresAt": "2031-08-25","detailUrl": "https://greenbook.nafdac.gov.ng/products/details/12464","sourceUrl": "https://greenbook.nafdac.gov.ng/","fetchedAt": "2026-09-26T20:17:35.347Z"}
What to know about the fields:
- Medical devices usually have no strength, form or route (
null), andactiveIngredientsnames the kind of device, e.g.["Sanitary Pads"]. - Registration numbers are not unique: in September 2026, 266 numbers were shared by 544
products.
productIdidentifies a record. dataQualityNote: NAFDAC's editors mark some product names with#,*or$and sometimes a review note such as "duplicate NRN", "check pack size" or "strength format" (about 440 records). The actor removes the marks fromproductNameand returns the note here, so you can decide how far to trust that record.marketingCategoryisnullfor devices and other products the site marks "NA".manufacturer: the list itself gives only a manufacturer id. WithincludeManufactureron (the default), the actor reads the Greenbook's manufacturer directory once per run and adds the name; withincludeManufacturerCountryon, it also reads one product page per distinct manufacturer for the country. One manufacturer id in September 2026 was missing from the directory; its records keep the id with anullname.
Data and privacy
The actor publishes the product and company data NAFDAC publishes so that the public can
check products. It drops one field the site sends: product_description, a free-text
field that in 1,699 of 8,980 records (September 2026) holds pasted spreadsheet rows with the
applicant's phone numbers and e-mail addresses, many of them named people's addresses at
Gmail or Yahoo (73% of the addresses were at free mail providers). It is never read into
the output. As a second safeguard, any other
free-text value (composition, packSize, strength) that contains an e-mail address or
a phone number is replaced by null (none did in September 2026). Applicants and
manufacturers are companies; a few are sole proprietorships trading under a person's name.
Nigeria's Data Protection Act 2023 applies to any personal data in what you store: use the
data for the purpose it is published for, checking products and their registrations.
Pricing
Pay per event:
| Event | Charged for |
|---|---|
product-record | Each registration stored in the dataset. |
Apify's standard run-start event covers starting the actor. Manufacturer lookups are not charged separately. Records are stored first and charged after, so you never pay for data you did not receive. When your spending limit runs out, the run stops cleanly and never stores an unpaid record.
Data source and politeness
- Source: the same JSON the Greenbook's own search table loads: a jQuery DataTables
GET https://greenbook.nafdac.gov.ng/withX-Requested-With: XMLHttpRequest. No login, cookie or captcha. The actor asks for 1,000 records per request (about 2 MB, 4 s), so the whole Greenbook takes 9 data requests. Manufacturer names come fromhttps://greenbook.nafdac.gov.ng/manufacturers(29 pages of 50 in September 2026, about 35 KB each, read once per run) and countries from the public product pages (/products/details/<id>, about 15 KB each, once per manufacturer). - robots.txt (checked 2026-09-26) allows every user agent and every path, with no crawl
delay. The actor still
- waits at least 1 second after each request ends before the next one starts (retries included; a constant, not an input),
- uses one connection, one request at a time,
- identifies itself honestly as
ng-nafdac-actor/0.1 (+https://apify.com/a-g-d/ng-nafdac), - retries connection errors, timeouts, HTTP 429 and 5xx with exponential backoff and jitter inside a run-wide budget (90 s of backoff), and stops at once, with a clear message, if the site refuses access (HTTP 401 or 403).
- Errors are not results. The server answers a failed query with HTTP 200, an
errormessage and an empty list; the actor treats that as an error, never as "no matches". - Terms: the Greenbook links no terms of use; its footer reads "© NAFDAC 2025. All rights reserved." No statement about automated access or reuse was found.
- Typical runs (measured 2026-09-26): the prefill (20 newest, with names) takes about 50 s and 30 requests; 200 records with names about 50 s; 2,500 drugs without names 16 s and 3 requests; 50 filtered records with names and countries 90 s and 55 requests.
Limitations
- Active and Inactive only. The public Greenbook shows only registrations whose status is Active or Inactive and that have not been deleted; product ids run to about 12,470, and roughly 3,500 of them do not appear in the public list. Third-party sites that quote more registrations (11,704 "tracked" on one) count records collected over time, including ones the Greenbook no longer shows. This actor returns what the Greenbook shows today.
- Countries are slow to add. They are only on product pages, one request per manufacturer: a run over the whole Greenbook with countries on makes about 1,000 extra requests (about 35 minutes). Raise the run timeout accordingly.
- Date filters are applied after download. The site cannot filter by date range, so
approvedSinceandexpiringBeforeare checked on each record (the actor stops paging once approvals are older thanapprovedSince, and narrowsexpiringBeforeto the expiry years on the site first). A filtered run may download more than it stores. - Data quality is the source's. Strengths, pack sizes and ATC codes are free text as
entered (some ATC codes are partial or read "Pending", which becomes
null), and some records carry review notes (seedataQualityNote). - A run is a snapshot. Approvals that arrive while a long run pages through the list shift it; the actor skips records it has already stored, and new approvals belong to the next run.