Jiji Scraper — Africa Classifieds (NG, KE, GH, UG, TZ) avatar

Jiji Scraper — Africa Classifieds (NG, KE, GH, UG, TZ)

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Jiji Scraper — Africa Classifieds (NG, KE, GH, UG, TZ)

Jiji Scraper — Africa Classifieds (NG, KE, GH, UG, TZ)

Export classified adverts from Jiji across five African markets: title, description, price and currency, per-category attributes such as mileage, bedrooms or condition, region and area, seller name, rating and verification badges, plus every advert photo URL.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

2 days ago

Last modified

Share

Jiji Scraper — Africa Classifieds (Nigeria, Kenya, Ghana, Uganda, Tanzania)

Jiji is the largest online classifieds network in Sub-Saharan Africa, and the volume is real: on the Nigerian site alone there are 420,000 home & garden adverts, 251,000 vehicle adverts, 216,000 electronics adverts, 67,000 cars, 24,000 houses for sale and 13,000 rentals live right now. This Actor turns any of those categories — on any of five country sites — into a clean table with price, per-category attributes, location, seller and photos.

One Actor covers Nigeria (jiji.ng), Kenya (jiji.co.ke), Ghana (jiji.com.gh), Uganda (jiji.ug) and Tanzania (jiji.co.tz), each with its own currency and regions, because the sites share one data contract.

What you get

One row per advert, 37 columns:

GroupFields
IdentityadvertId, guid, url, title, description, status, source, country
Pricingprice, currency, priceLabel, pricePeriod (e.g. "per month" on rentals)
Categorycategory, categorySlug, categoryId, isJobAd
Attributescondition, attributes (object), attributesText
Locationregion, regionName, regionParent, regionSlug
SellersellerName, sellerId, sellerRating, sellerAvatar, canViewContacts
Trust & promotionisVerifiedId, isInspected, isPopular, isPromoted, promotionPackage
MediaimageCount, mainImage, imageUrls
MetascrapedAt

attributes is the column that makes this dataset useful. Jiji stores a different attribute set per category, and this Actor keeps all of them — as a nested object that the platform flattens into its own CSV columns, and as a readable one-line string:

  • a car: Condition: Foreign Used | Transmission: Automatic | Mileage: 150000 km
  • a flat: Property size: 250 sqm | Furnishing: Unfurnished | Bedrooms: 4 | Bathrooms: 4
  • a phone: Condition: Brand New

Sample row (Kenya, rentals)

{
"advertId": "54491233",
"url": "https://jiji.co.ke/kiambu/houses-apartments-for-rent/4-bedroom-townhouse-....html",
"title": "4 Bedroom Townhouse in Kiambu Road",
"price": 380000,
"currency": "KES",
"priceLabel": "KSh 380,000",
"pricePeriod": "per month",
"category": "Houses & Apartments For Rent",
"attributes": {
"Property size": "250 sqm",
"Furnishing": "Unfurnished",
"Bedrooms": "4",
"Bathrooms": "4"
},
"region": "Kiambu, Kiambu / Kiambu",
"regionParent": "Kiambu",
"sellerName": "Peter M Ndungu",
"sellerRating": 4.8,
"isVerifiedId": true,
"imageCount": 11,
"mainImage": "https://pictures-kenya.jijistatic.com/86703997_....jpg"
}

Input

FieldWhat it does
CountryNigeria, Kenya, Ghana, Uganda or Tanzania. Each is a separate marketplace.
CategoryThe slug from the category URL. Verified on jiji.ng: home-garden, vehicles, electronics, furniture, services, cars, mobile-phones, houses-apartments-for-sale, land-and-plots-for-sale, houses-apartments-for-rent, jobs.
Search termOptional free-text search across every category — overrides the category when set.
Maximum advertsStop after this many rows; roughly 23 adverts arrive per page.
ProxyResidential, pinned automatically to the selected country.
{
"market": "ng",
"categorySlug": "cars",
"maxResults": 1000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Searching instead of browsing:

{ "market": "ke", "searchQuery": "toyota corolla", "maxResults": 500 }

What it is good for

Price benchmarking in markets with no official index. Used-car and property prices across West and East Africa are not published anywhere reliable. A few thousand rows with price, condition, Mileage and regionParent produce a real price curve per model and per state — the input to a valuation tool, an insurance model or a trade-in calculator.

Supply and demand intelligence. isPromoted and promotionPackage reveal which sellers are paying for reach this week; isPopular and isVerifiedId separate serious sellers from noise. Run daily and the delta shows which categories are heating up.

Dealer and merchant discovery. sellerId is stable, so grouping a run by seller shows who is running a business rather than selling one item — a shortlist of active traders in a category, with rating and advert count attached. sellerName is filled where the seller trades under a name (about 15% of adverts in property, higher in vehicles and services).

Product-catalogue and pricing data for e-commerce. Electronics and phone categories carry brand, condition and price at a volume no marketplace API exposes, which is what makes them usable for repricing and for building a local catalogue.

Cross-market comparison. The same phone, the same car model, five countries and five currencies, in one schema — a comparison that normally means five separate scrapers.

How it works

Jiji's own front end reads its listings from a JSON endpoint, and this Actor reads the same endpoint directly. That means no HTML parsing, no headless browser, and no breakage when the site is restyled — the result is fast, cheap and stable.

Each request is routed through a residential IP inside the target country, because each Jiji site serves its full result set only to local traffic.

Long runs are protected by the guards this Actor family shares:

  • A fresh IP on every retry, since one 403 from one exit node says nothing about the next.
  • A failed page is skipped, not fatal; three consecutive failures stop the run.
  • De-duplication by advert ID, so promoted adverts repeated across pages are saved once.
  • A time budget that stops the crawl while everything already collected is safely pushed.

Deep pagination is verified rather than assumed: pages 1, 15 and 40 of the same category return entirely distinct adverts.

Cost and limits

Billing is per result, so cost follows rows saved rather than pages fetched. Store discounts apply on paid Apify plans.

  • Phone numbers are not included. Jiji puts seller contacts behind a click that requires a session, and this Actor does not log in. canViewContacts tells you whether the advert exposes contacts at all; sellerId and the advert URL are what you use to reach a seller.
  • Category slugs differ slightly between countries — copy the slug from the category URL on the site you are targeting.
  • condition is a car/electronics attribute; property adverts have Bedrooms and Furnishing instead, all of which live in attributes.
  • sellerName is present only where the seller publishes one; sellerId is always present.

This Actor reads publicly listed adverts. It does not log in, does not bypass access controls, and does not touch contact details hidden behind authentication. Advert text and seller names may constitute personal data — process them with a lawful basis and honour deletion requests.

Not affiliated with, endorsed by, or connected to Jiji or its operators. The name is used only to identify the public source of the data.


*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).


Use cases

  • Export records in bulk and analyse them in a spreadsheet or database.
  • Track how the data changes over time by scheduling repeat runs.
  • Feed records into a dashboard, CRM or internal tool through the Apify API.
  • Build a research dataset without writing or maintaining a scraper.
  • Monitor Jiji for new entries and alert your team when they appear.

Other Actors from the same collection:

Scheduling and integrations

Run this Actor on a schedule — hourly, daily or weekly — and have every run append to the same dataset, which is how you turn a one-off export into a time series. Results can be pushed straight into Google Sheets, Slack, Zapier, Make, Airtable or any Webhook.

How much Jiji data can you extract in one run?

A single run returned 1,000 rows in 192 seconds on the example input, and it was still going when the measurement stopped — raise the result limit and it keeps paginating. That is roughly 312 rows a minute.

There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much Jiji itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.

Jiji scraping — frequently asked questions

Do I need a Jiji API key, account or login?

No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.

How do I export Jiji data to CSV, Excel, JSON or Google Sheets?

Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.

Can I schedule this Jiji scraper to run daily or hourly?

Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the rows you care about really do change that fast.

How many rows can I get, and what does it cost?

See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.

This Actor collects only information that Jiji publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.

What happens if Jiji blocks the run or changes its layout?

A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".

Can I use this with an AI agent, LangChain or an MCP client?

Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.

How to scrape Jiji without an API

Jiji has no public bulk export for this data, which normally leaves copy-and-paste or a custom crawler. This Actor is the second one, already built and maintained: it reads the public pages, follows the pagination, and hands back clean rows.

  1. Fill in the input below — the example is prefilled, so Start works straight away.
  2. Watch the log name each page it walks and how many rows each one returned.
  3. Export from Storage, or pull the dataset over the API into your own pipeline.

No API key, no account, no browser extension, no manual copying.