Jumia Marketplace Scraper - Products, Prices, Reviews & Sellers avatar

Jumia Marketplace Scraper - Products, Prices, Reviews & Sellers

Pricing

from $1.20 / 1,000 product results

Go to Apify Store
Jumia Marketplace Scraper - Products, Prices, Reviews & Sellers

Jumia Marketplace Scraper - Products, Prices, Reviews & Sellers

Scrape Jumia, Africa's largest marketplace: products with local prices, discounts, ratings, official-store badges and customer reviews across the Nigeria, Egypt, Kenya and Morocco storefronts. Search keywords or paste links, and monitor price changes with recurring updates.

Pricing

from $1.20 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

5

Monthly active users

9 days ago

Last modified

Categories

Share

Jumia Scraper: Products, Prices, Sellers & Reviews

Jumia Scraper turns Jumia, Africa's largest online marketplace, into a clean product data feed. Get product titles, prices, discounts, ratings, official-store badges and seller details across the Nigeria, Egypt, Kenya and Morocco storefronts. Search by keyword or paste product, vendor and catalogue links, switch on product detail pages and full customer reviews when you need depth, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Two ways to collect. Keyword search walks one market's catalogue for your terms; My own links reads exactly the product, vendor or catalogue links you paste.
  • Four African markets, one actor. Nigeria, Egypt, Kenya and Morocco, each its own catalogue with its own currency and connection exit.
  • Prices, discounts, ratings and badges on every listing. Official-store and campaign badges, seller id, express and sponsored flags, all without any extra toggle, on every search, catalogue and vendor-shop listing (a pasted single product URL has no badges, since that data lives only on search and catalogue cards).
  • Product detail depth on demand. Switch on the description, specification table, barcode, stock state and seller profile per run, and pay the surcharge only for what you read.
  • Full customer reviews, not just a snippet. The reviews reader walks every page of a product's reviews and returns the star histogram and total count alongside the text.
  • Vendor shops in one paste. A vendor shop link returns the shop's own profile row followed by its products.
  • Built for monitoring. Recurring updates returns only new and changed listings on repeat runs, and a run the site genuinely refuses fails loudly instead of returning an empty dataset.

Use Cases

  • Price monitoring and repricing: track price, discount and stock changes on competitor listings with Recurring updates.
  • Marketplace research: compare official-store versus marketplace-seller pricing and ratings across four African storefronts.
  • Review mining: collect full customer review text and star histograms for product quality analysis.
  • Vendor intelligence: pull a shop's seller score, follower count and full product catalogue from one shop link.
  • Catalogue enrichment: feed titles, images, prices and specifications into your own store or comparison site.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
recordType"product" (also "vendor" for a vendor shop header row)
id / sku"SA0123XXFAKE1" (same value)
name / displayName"Sample Wireless Earbuds Pro - Black"
brand"SAMPLEBRAND"
categories["Electronics", "Audio", "Earbuds"]
url / imageUrlproduct page link and image link
currency"NGN" (follows the selected market)
price / priceDisplay19999.0 / "N 19,999"
oldPrice / discountPercent29999.0 / 33
ratingAverage / ratingCount4.3 / 214
officialStore / badgestrue / ["Official Store"]
sellerId100001
shopExpress / sponsored / buyabletrue / false / true
market / marketHost"NG" / "www.jumia.com.ng"
gtinbarcode, when the listing or the detail page carries one
availability"in_stock" (with Read product detail pages on)
description / specificationsfull text and the spec table (with Read product detail pages on)
sellerName / sellerUrl"Sample Official Store" / the seller's shop link (with Read product detail pages on)
sellerScore / sellerFollowers98 / 3450 (with Read product detail pages on)
reviewsTotal / reviewsFetched214 / 10 (with Read customer reviews on)
reviewsstar rating, title, text, date, author, verified-purchase flag (with Read customer reviews on)
reviewsHistogramcounts for each star, 1 to 5 (with Read customer reviews on)
sourceType / sourceId / sourceUrlhow the record was reached, for example "search" / your search term / null
position / scrapedAtposition within its source, and when it was read
changeType / changedFields"NEW", "UPDATED", "UNCHANGED", "REAPPEARED" or "EXPIRED" (with Recurring updates on)

A vendor shop link returns one vendor row ahead of its products, carrying name, url, sellerScore, followers, currency, market, marketHost and productsListed instead of the product fields above, plus the same sourceType / sourceId / sourceUrl / scrapedAt. Recurring-updates rows also carry firstSeenAt and lastSeenAt. A product's own lastModified timestamp is passed through as-is but is not used to detect changes. When the marketplace's page includes seller performance labels, a detail-enriched product also carries a sellerPerformance object (shipping speed, quality score, customer rating).

How to Use

  1. Pick a mode. Keyword search walks one market's catalogue for your search terms. My own links reads exactly the product pages, vendor shops or catalogue links you paste.
  2. In keyword search, pick the market and enter your search terms. Optional filters: ordering, brand names, official stores only, minimum discount.
  3. Set Max records to bound the run (0 means no limit: the walk then ends when the catalogue runs out).
  4. Turn on Read product detail pages and Read customer reviews when you need depth; both add a small per-product surcharge.

Keyword search with filters:

{
"mode": "search",
"country": "ng",
"queries": ["wireless earbuds"],
"sort": "lowest-price",
"officialStoreOnly": true,
"minDiscount": 15,
"maxItems": 50
}

Paste a product link and a vendor shop link, enriched:

{
"mode": "urls",
"urls": [
"https://www.jumia.com.ng/sample-wireless-earbuds-pro-black-000000001.html",
"https://www.jumia.com.ng/sample-official-store/"
],
"fetchDetails": true,
"fetchReviews": true,
"maxReviewsPerProduct": 20
}

Recurring updates, watching a search for gone listings:

{
"mode": "search",
"country": "ke",
"queries": ["blender"],
"incrementalMode": true,
"stateKey": "ke-blender-watch",
"emitExpired": true,
"maxItems": 0
}

Continue an interrupted run:

{
"mode": "search",
"country": "ma",
"queries": ["telephone"],
"maxItems": 500,
"resumeFromRunId": "<PREVIOUS_RUN_OR_DATASET_ID>"
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/jumia-marketplace-scraper").call(run_input={"mode": "search", "country": "ng", "queries": ["wireless earbuds"], "maxItems": 50})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/jumia-marketplace-scraper').call({ mode: 'search', country: 'ng', queries: ['wireless earbuds'], maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Max records and Max pages

Max records (maxItems) is the single limit that stops a run; 0 means no limit, and the walk then ends naturally when the catalogue, search or vendor shop runs out. Product rows and vendor header rows both count against it. Max pages per source (maxPages) is a runaway guard bounding how deep any one search or catalogue walk goes; leave it at 0 to go as deep as the source serves.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset id and the actor skips every record that run already collected, so an interrupted large collection can finish without paying twice. It cannot be combined with Recurring updates on the same state key.
  • Recurring updates (incrementalMode) is for running the same search or links again and again, for example daily, and getting only what changed. The first run returns everything as NEW. Later runs label each record NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED. EXPIRED is produced by a run that itself scans its whole scope (not capped, not resumed, no source left unfinished, at least one record seen) with emitExpired on, for records the stored memory held as present that this run no longer found; a capped, resumed or partially failed run never marks anything gone. REAPPEARED only ever appears for a record that a previous such run had already marked gone. stateKey names or shares the stored memory; leaving it empty keys the memory to the exact run setup automatically.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword search) or urls (your own links).
countrystringngMarket storefront: ng, eg, ke or ma. Only read in search mode; a pasted link is read on its own market regardless.
queriesarrayno default (prefill: ["phone"])Search terms, search mode only. One entry per search.
sortstringrelevancerelevance, newest, lowest-price, highest-price or rating.
brandsarrayno defaultBrand names, search mode only. Matched against the catalogue's own filters; an unoffered name stops the run with the list of available brands.
officialStoreOnlybooleanfalseSearch mode only. Return only official-store products.
minDiscountinteger0Search mode only. Minimum discount percent (0 to 100); 0 disables the filter.
urlsarrayno default (prefill: a sample catalogue search link)Links mode only. Product pages, a vendor shop link, or catalogue links (search results, categories).
fetchDetailsbooleanfalseRead each product's own detail page and add description, specifications, seller score, stock state and barcode.
fetchReviewsbooleanfalseCollect each product's customer reviews, total and star histogram.
maxReviewsPerProductinteger10Cap on reviews collected per product (0 = every review).
maxItemsinteger0 (no limit; the console's own prefill is 20)Stop after this many records across the whole run. Products and vendor header rows both count.
maxPagesinteger0 (no limit, internally capped at 500)Runaway guard on depth per search or catalogue walk.
resumeFromRunIdstringno defaultContinue one interrupted run by its run or dataset id.
incrementalModebooleanfalseReturn only new and changed records on repeat runs of the same setup.
stateKeystringno defaultName or share an incremental-mode memory.
emitUnchangedbooleanfalseAlso return, and bill, unchanged records.
emitExpiredbooleanfalseAlso return, and bill, records that were present before and are no longer found. Only produced by a run that itself scans its whole scope.
mcpConnectorsarrayno defaultOptional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstringno defaultNotion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.
proxyConfigurationobjectApify Proxy, premium residential-grade tier pinned to the selected marketConnection used for every request. This marketplace refuses ordinary datacenter connections.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"recordType": "product",
"id": "SA0123XXFAKE1",
"sku": "SA0123XXFAKE1",
"name": "Sample Wireless Earbuds Pro - Black",
"displayName": "Sample Wireless Earbuds Pro - Black",
"brand": "SAMPLEBRAND",
"categories": ["Electronics", "Audio", "Earbuds"],
"url": "https://www.jumia.com.ng/sample-wireless-earbuds-pro-black-000000001.html",
"imageUrl": "https://example.img/sample-earbuds.jpg",
"currency": "NGN",
"price": 19999.0,
"priceDisplay": "N 19,999",
"oldPrice": 29999.0,
"discountPercent": 33,
"ratingAverage": 4.3,
"ratingCount": 214,
"officialStore": true,
"badges": ["Official Store"],
"sellerId": 100001,
"shopExpress": true,
"sponsored": false,
"buyable": true,
"market": "NG",
"marketHost": "www.jumia.com.ng",
"lastModified": 1700000000,
"gtin": "0000000000000",
"availability": "in_stock",
"description": "Sample product description text.",
"specifications": [{ "name": "Color", "value": "Black" }],
"sellerName": "Sample Official Store",
"sellerUrl": "https://www.jumia.com.ng/sample-official-store/",
"sellerScore": 98,
"sellerFollowers": 3450,
"reviewsTotal": 214,
"reviewsFetched": 10,
"reviews": [
{
"rating": 5,
"title": "Sample headline",
"text": "Sample review text.",
"date": "01-01-2026",
"author": "by Jane Doe",
"verified": true
}
],
"reviewsHistogram": { "5": 120, "4": 60, "3": 20, "2": 8, "1": 6 },
"sourceType": "search",
"sourceId": "wireless earbuds",
"sourceUrl": null,
"position": 1,
"scrapedAt": "2026-09-29T00:00:00Z"
}

Plan Requirement

This marketplace's own protection refuses ordinary datacenter and direct connections, so the default connection setting requests a premium residential-grade proxy tier pinned to the market you select. Running it needs a paid Apify plan that includes that tier; you can also paste your own connection links in the Connection section to use your own instead. The Pricing tab shows the current per-record and detail-enrichment rates.

FAQ

How much does it cost?

You pay per product or vendor record returned, plus a detail-enrichment surcharge only for records whose detail page or reviews were read. The Pricing tab shows the current rates for this actor. Use Max records to cap the cost of any run.

This actor collects only publicly available marketplace data: prices, descriptions, ratings and reviews shown on the public site. You are responsible for how you use it: follow Jumia's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Seller names, photos and review text may carry their own rights or personal-data considerations.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Recurring updates. Each run then returns only new and updated records, and unchanged ones are not billed unless you turn that on too.

Why did my brand filter stop the run instead of just returning nothing?

Brand names are matched against the filters the marketplace itself offers for your exact search, not against a fixed list. A name it does not offer stops the run with the list of available brands, so a typo can never silently return an unfiltered catalogue.

Why did my run fail instead of returning an empty dataset?

If the marketplace refuses every request the run makes, that is a connection problem, not an empty search, so the run fails loudly with a clear message instead of returning zero rows silently. A genuine empty search, where the catalogue was read successfully and holds nothing for your terms, succeeds with zero rows and a visible verdict on the run page.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 More scrapers you might like

Pair this actor with these related scrapers from the same team:

🧩 Falabella Scraper
Scrape Falabella, Latin America's leading retail marketplace: products with local prices...
🧩 Digitec Galaxus Scraper
Scrape Digitec Galaxus, Switzerland's largest online retailer: products with local...
🧩 Walmart Scraper
Scrape Walmart.com by keyword, URL, or item ID. Extract prices, was-prices, sellers...
🛒 Depop Scraper
From $1/1K. Scrape Depop search results, listings, shops, and reviews to JSON, CSV, or...
🧩 Mercado Livre Brazil
Scrape Mercado Livre Brazil by keyword or URL. Filter by category, brand, price...
🏨 Trendyol Scraper
From $0.80/1K. Scrape Trendyol products, prices, ratings, badges, sellers, full reviews...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.