# Jumia Product Facts | Direct Product Pages (`zinin/jumia-product-facts`) Actor

Extract price, stock, brand and rating facts from exact public Jumia product URLs. Valid products are billed; blocked and missing pages are free diagnostics.

- **URL**: https://apify.com/zinin/jumia-product-facts.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 result founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Jumia Product Facts — Product Listings to Structured Data

Extract product facts from direct public Jumia product-detail pages for retailers, commerce aggregators, and product-price monitoring. One billable row is one unique product with `sku`, `name`, numeric `price`, and a product `url`. The actor only opens direct `*.html` product URLs; it does not crawl search, category, facet, seller, or review pages.

### What you get

- One structured row per valid public product or dated price observation.
- Source identifiers, a direct source URL, and useful facts for analysis.
- Free diagnostics for source rejection, empty results, or buyer limits.
- Run it on Apify schedules, monitor it, call it through the API, and export JSON, CSV, or Excel.

### How to run it

1. Enter the public source value in **Direct product URLs**.
2. Adjust the optional result limit if needed.
3. Start the Actor and open its default dataset for results or free diagnostics.

### Pricing

Pay-per-event price: **$0.004 per valid product** (`result-found`), $0 per start, and $0 for diagnostics. 100 products cost $0.40. There is no Actor-specific free quota; the Apify Free plan listed $5 monthly usage credit on 2026-11-01, subject to other account usage. A live Store API GET on 2026-11-01 showed [khadinakbar/jumia-product-scraper](https://apify.com/khadinakbar/jumia-product-scraper) at 17 users in the last 30 days and $0.004 per `product-scraped`. That comparator also separately charges $0.004 for optional detail enrichment and a $0.00005 start; this Actor charges neither.

The current `result-found` event price is $0.004 per useful row. The following are Actor event charges:

| Useful rows | Actor event charges |
|---:|---:|
| 10 | $0.040 |
| 100 | $0.400 |
| 1,000 | $4.000 |

These examples assume that many valid, billed rows across one or more runs. Input limits and source availability may require several runs. Apify platform compute usage is separate.

### Input

| Field | Required | Purpose |
|---|---|---|
| `productUrls` | Yes | Direct product detail URLs only; category, search, and facet pages are not crawled. One confirmed real URL is prefilled; a second verified sample is pending the source-request cap. |
| `maxItems` | No | Maximum number of distinct direct product URLs per run. |
| `proxyConfiguration` | No | Accepted for schema compatibility; proxy rotation is not used. |

```json
{
  "productUrls": [
    "https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"
  ]
}
```

### Output

This row comes from a successful Actor run completed 2026-11-01T16:12:09.729Z. Values are copied from its dataset.

```json
{
  "sku": "BL416MP883XH7NAFAMZ",
  "name": "Blackview FORT 1 Rugged Smartphone 6.56 HD Display 4GB RAM  128GB ROM 10000mAh Battery 4G Dual SIM Android 15 Octa Core T615 1.8GHz Black",
  "brand": "Blackview",
  "price": 173539,
  "currency": "NGN",
  "availability": "http://schema.org/InStock",
  "url": "https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"
}
```

| Field | Meaning |
|---|---|
| `sku` | Product identifier shown by the source. |
| `name` | Published product or job name. |
| `brand` | Brand reported on the product page. |
| `price` | Numeric price or dated observation. |
| `currency` | Currency code. |
| `availability` | Availability reported on the source page. |
| `url` | Direct source page for this result. |

### Other tools we built

#### Related tools

Related tools for adjacent workflows in e-commerce.

| Actor | What it does |
|---|---|
| [Power.no Product Facts | Prices & Stock](https://apify.com/zinin/power-no-product-facts) | Pair it in the e-commerce workflow: Extract NOK prices, online stock and ratings from exact public Power.no product URLs |
| [Shopify Catalog & Merchandising Intelligence](https://apify.com/zinin/shopify-store-intelligence) | Pair it in the e-commerce workflow: Qualify Shopify merchant leads with evidence-backed public catalog coverage, observed price positioning,... |
| [Open Prices Product Price](https://apify.com/zinin/open-prices-product-price) | Pair it in the e-commerce workflow: Find observed product prices by barcode or date in the Open Prices dataset |
| [Zid Product Export Intelligence](https://apify.com/zinin/zid-store-products) | Pair it in the e-commerce workflow: Turn merchant-owned, merchant-authorized, or otherwise licensed Zid product exports into stable evidence,... |
| [Chotot Vietnam Listings Scraper](https://apify.com/zinin/chotot-listings) | Pair it in the e-commerce workflow: Pull live classified ad listings (real estate, vehicles, electronics, jobs and more) straight from... |

### FAQ / Limitations

#### Source conditions

[Jumia Nigeria robots.txt](https://www.jumia.com.ng/robots.txt) returned HTTP 200. Relevant exact comments:

> Site scaping is permited IF the user-agent is clearly identify it as a bot and
> the bot owner and is using less than 200 request per minute
>
> Bot identification must have a owner url or contact if we need to contact them
>
> Bots with fake user-agent will be blocked
>
> Bots trying to use too many IPs to increase performance may also be blocked.

The same robots file blocks `/en/`, search/facets and many crawl-trap paths; it explicitly allows `/slp/nc/sitemap/`. This actor accepts only one-segment direct product paths ending in `-<digits>.html`, checks `robots.txt` before crawling, identifies the bot, stays below the documented 200 requests/minute, and does not use IP rotation.

The [Jumia Terms and Conditions](https://www.jumia.com.ng/terms-and-conditions/) URL returned HTTP 200, but the response exposed only a page shell/footer and no readable terms clauses through this fetch. No terms quotation or permission to reuse data is claimed. No retry or Cloudflare bypass was attempted. The source terms remain unverified from that page shell; users must respect Jumia conditions for their use case.

#### Limitations

Only direct detail pages on `.com.ng`, `.com.ke`, and `.com.eg` are supported. Page contents, prices, and availability change. Fields depend on structured data present on the page. The current offline sample has one product record; there is no verified second prefill URL yet. Data accuracy is limited to what the public page exposes at run time; this is not a shopping guarantee.

#### Frequently asked questions

**Does it search Jumia?** No. The input must be a direct supported product URL.

**Are seller or buyer contacts collected?** No. Only organization/store seller names from product structured data are eligible.

**What if Jumia blocks a page?** The Actor returns a free diagnostic and does not bypass a challenge.

# Changelog

This Actor's version history is a separate document: https://apify.com/zinin/jumia-product-facts/changelog.md

# Actor input Schema

## `productUrls` (type: `array`):

Direct product detail URLs only; category, search, and facet pages are not crawled. One confirmed real URL is prefilled; a second verified sample is pending the source-request cap.

## `maxItems` (type: `integer`):

Maximum number of distinct direct product URLs per run.

## `proxyConfiguration` (type: `object`):

Accepted for schema compatibility; proxy rotation is not used.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"
  ],
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productUrls": [
        "https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/jumia-product-facts").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "productUrls": ["https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/jumia-product-facts").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://www.jumia.com.ng/blackview-fort-1-rugged-smartphone-6.56-hd-display-4gb-ram-128gb-rom-10000mah-battery-4g-dual-sim-android-15-octa-core-t615-1.8ghz-black-419694379.html"
  ]
}' |
apify call zinin/jumia-product-facts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zinin/jumia-product-facts"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OwQRChJ8oL68nOOVv/builds/GIBwScaQb68Rvya0Y/openapi.json
