# Jumia API scraper — Africa's largest marketplace in Egypt, Nigeria, Kenya, Morocco, Côte d'Ivoire, Ghana, Uganda and Senegal: search, categories, flash sales, full product records with seller score and other sellers' offers, reviews and suggestions, in local currency. No account, no browser.

> Search one Jumia storefront by keyword: Jumia SKU, title, brand, image, price in local currency with the struck price and discount, variant price range, rating and review count, Jumia Express flag, seller id, category path, campaign badge, stock label, other sellers' offer count and lowest price, and size variants. Sort by popularity, newest, price or rating; filter by price, minimum rating, minimum discount, Jumia Express and official stores. 40 products per page.
> ReefAPI engine `jumia` · 7 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/jumia/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /jumia/v1/search — 1 credit
Search one Jumia storefront by keyword: Jumia SKU, title, brand, image, price in local currency with the struck price and discount, variant price range, rating and review count, Jumia Express flag, seller id, category path, campaign badge, stock label, other sellers' offer count and lowest price, and size variants. Sort by popularity, newest, price or rating; filter by price, minimum rating, minimum discount, Jumia Express and official stores. 40 products per page.

**Parameters:**
- `query` (string, required) — What to look for. Jumia sometimes answers a keyword with a category page; that is followed and reported as `redirected_to`.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `page` (integer, optional, default 1) — Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.
- `sort` (enum, optional, default "popular") — Order of results — only orderings Jumia offers. [one of: popular, newest, price_asc, price_desc, rating]
- `price_min` (number, optional) — Lowest price in the country's currency.
- `price_max` (number, optional) — Highest price in the country's currency.
- `min_rating` (integer, optional) — Only products rated at least this many stars (1-4).
- `min_discount` (enum, optional) — Only products discounted by at least this percentage. [one of: 10, 20, 30, 40, 50]
- `express_only` (boolean, optional, default false) — Only products shipped by Jumia Express.
- `official_store_only` (boolean, optional, default false) — Only products from official brand stores.
- `include_sponsored` (boolean, optional, default false) — Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country, query, redirected_to

**Example request body:**
```json
{
  "query": "iphone",
  "country": "eg"
}
```

### POST /jumia/v1/category/products — 1 credit
Browse one Jumia category (or brand page) by its path, with the same product rows, sorts, filters and paging as `search`, plus the category breadcrumb.

**Parameters:**
- `category` (string, required) — Jumia category path — the part of a category URL after the domain (https://www.jumia.com.ng/phones-tablets/ → phones-tablets). A full category URL is accepted. Paths differ per country (French storefronts use French paths); `breadcrumbs[].url` on a product returns them.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `page` (integer, optional, default 1) — Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.
- `sort` (enum, optional, default "popular") — Order of results — only orderings Jumia offers. [one of: popular, newest, price_asc, price_desc, rating]
- `price_min` (number, optional) — Lowest price in the country's currency.
- `price_max` (number, optional) — Highest price in the country's currency.
- `min_rating` (integer, optional) — Only products rated at least this many stars (1-4).
- `min_discount` (enum, optional) — Only products discounted by at least this percentage. [one of: 10, 20, 30, 40, 50]
- `express_only` (boolean, optional, default false) — Only products shipped by Jumia Express.
- `official_store_only` (boolean, optional, default false) — Only products from official brand stores.
- `include_sponsored` (boolean, optional, default false) — Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country, category

### POST /jumia/v1/deals/flash-sales — 1 credit
Jumia's current Flash Sales page for one storefront: the same product rows as `search`, including the stock label Jumia prints on flash-sale items, with sorts, filters and paging.

**Parameters:**
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `page` (integer, optional, default 1) — Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.
- `sort` (enum, optional, default "popular") — Order of results — only orderings Jumia offers. [one of: popular, newest, price_asc, price_desc, rating]
- `price_min` (number, optional) — Lowest price in the country's currency.
- `price_max` (number, optional) — Highest price in the country's currency.
- `min_rating` (integer, optional) — Only products rated at least this many stars (1-4).
- `min_discount` (enum, optional) — Only products discounted by at least this percentage. [one of: 10, 20, 30, 40, 50]
- `express_only` (boolean, optional, default false) — Only products shipped by Jumia Express.
- `official_store_only` (boolean, optional, default false) — Only products from official brand stores.
- `include_sponsored` (boolean, optional, default false) — Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country

### POST /jumia/v1/product/detail — 1 credit
The full Jumia product record by SKU, numeric id or URL: title, brand, description, key features, what's in the box, gallery, specification table (model, weight, colour, material, barcode when published), price with struck price, discount and variant price range, availability and stock label, flash-sale status and end time, official-store and Jumia Express flags, promotions, return and warranty policy, rating and review count, the seller with its score, followers and performance grades, other sellers' offers, breadcrumb and every size variant with its own price and stock label.

**Parameters:**
- `product_id` (string, required) — Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** product{product_id (SKU), jumia_id, product_group_id, title, name, brand, url, description, key_features[], whats_in_the_box, images[], gtin (null unless Jumia publishes a barcode), model, weight_kg, color, main_material, production_country, shop_type, product_line, price (number, lowest variant price), price_max, price_before_discount, price_before_discount_max, discount_percent, currency, availability (in_stock|out_of_stock), stock_text, stock_quantity, flash_sale{status (active|upcoming), ends_at, starts_text}, official_store, official_store_label, campaign, jumia_express, promotions[] (conditional offers, never subtracted), delivery_note (for Jumia's default delivery location), policies[]{title, text}, rating, review_count, rating_scale, rating_count_page, seller{id, name, url, score_percent, followers, performance[]{metric, grade}}, featured_offer{price, price_before_discount, currency, seller}, offer_count, offers_lowest_price, other_offers[]{price, price_before_discount, currency, seller{name, url, score_percent}, warranty}, categories[], breadcrumbs[]{name, url}, variants[]{variant_sku, name, available, price, price_before_discount, discount_percent, stock_text, stock_quantity, stock_status}, country, language}

**Example request body:**
```json
{
  "product_id": "https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"
}
```

### POST /jumia/v1/product/offers — 1 credit
Every seller offering one Jumia product: the featured (buy-box) seller with its score, followers and performance grades, and each other seller's price, seller score and warranty, cheapest first, with the offer count Jumia shows.

**Parameters:**
- `product_id` (string, required) — Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** product{product_id, jumia_id, title, brand, url, currency, price, availability, offer_count, offers_lowest_price} + offers[]{position, featured, price, price_before_discount, currency, seller{id, name, url, score_percent, followers, performance[]}, warranty} + count

**Example request body:**
```json
{
  "product_id": "https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"
}
```

### POST /jumia/v1/product/reviews — 1 credit
Verified customer reviews of one Jumia product, 10 per page: average rating, number of ratings, star histogram, number of written reviews, and each review's stars, title, text, date, reviewer name as Jumia shows it and verified-purchase flag.

**Parameters:**
- `product_id` (string, required) — Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `page` (integer, optional, default 1) — Review page, 1-based, 10 reviews per page. Past the end → empty list.
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** product_id, rating, rating_scale, rating_count, rating_histogram{1..5}, review_count, reviews[]{rating, title, body, date, author, verified_purchase}, count, page, total_pages, country, language

**Example request body:**
```json
{
  "product_id": "https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"
}
```

### POST /jumia/v1/search/suggest — 1 credit
Jumia's search-box suggestions for a partial query in one storefront: completed search phrases and suggested official stores or brand pages.

**Parameters:**
- `query` (string, required) — The beginning of a search, as typed.
- `country` (enum, optional, default "eg") — Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed. [one of: eg, ng, ke, ma, ci, gh, ug, sn]
- `language` (enum, optional) — Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only. [one of: en, fr, ar]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** query, suggestions[], stores[]{name, url, image}, other[], count, country

**Example request body:**
```json
{
  "query": "iphone"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=jumia
- Human docs page: https://reefapi.com/docs/jumia
- Overview page: https://reefapi.com/jumia-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
