Tijelabin Multi-Scraper (tijelabin.com) avatar

Tijelabin Multi-Scraper (tijelabin.com)

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Tijelabin Multi-Scraper (tijelabin.com)

Tijelabin Multi-Scraper (tijelabin.com)

Scrape tijelabin.com — an Algerian classifieds marketplace. Paste a search, category, location, store or product URL: get title, price, city, photos, seller and sold status. No login needed.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Hamza Abbad

Hamza Abbad

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissions

Share

Tijelabin Multi-Scraper

Scrape Tijelabin — an Algerian classifieds marketplace. No login required, no CAPTCHAs in the way, so runs are fast and cheap. Every record is a flat, normalized object ready to feed straight into a spreadsheet, a database, or another Actor downstream.

What you can scrape

The Actor needs exactly one input: paste any tijelabin.com page URL into URL (pageUrl) and the Actor detects what it points at — a search page runs that search, a category page browses the category, a wilaya or commune page browses the location, a store page scrapes the seller's listings, a listing page scrapes the listing in full detail. A collapsible Legacy inputs (advanced) section keeps the explicit per-task controls from earlier versions for everything a pasted URL can't express (hand-picked URL lists, similar products, the category-tree snapshot):

Key (startMode value) — Console labelWhat it returnsBest for
search — Search by keywordUp to N listings matching a free-text query, paginated — the site's search covers titles and descriptionsMarket research, price tracking, lead lists
category — Browse a categoryAll listings in one category, paginated. The taxonomy is flat: 39 categories, no subcategoriesBrowsing a niche (phones, cars, clothing…)
directUrls — Specific listing URLsA specific list of listing pages, fully enrichedResuming a previous run, following up on alerts, checking one item's real status
location — Browse a location (wilaya or commune)All listings in one wilaya (/state/… pages) or one commune (/city/… pages). The pasted URL decides which kind of grid is scraped. The site covers the 48 pre-2019 wilayasLocal inventory checks ("what's for sale in Algiers?")
store — Seller store listingsEvery listing a seller has published, one row per listing, paginatedTracking a shop's inventory, monitoring a seller, building seller histories
similar — Similar productsThe products listed in the "Produits similaires" section of each pasted listing's detail pageDiscovering alternatives, competitive research
categories — Category tree snapshotEvery category node (flat taxonomy, 39 nodes), each with its category page URLBuilding a taxonomy, seeding category runs, site mapping

All modes share the same flat row shape; each mode populates only the fields it has data for (the others are null or empty). Grid modes (search / category / location / store) fill the card fields; directUrls fills the full projection; Similar products (similar) fills the card fields plus a similarToId marker; Category tree snapshot (categories) emits category nodes marked with __type: "tijelabin_category". Every product row is one listing. Sold listings are skipped by default unless you turn the toggle on. Use the key names (search, category, directUrls, location, store, similar, categories) in JSON/API calls — the What to scrape (startMode) picker shows the Console labels.

Why this Actor

  • Fast and light. No login, no session, quick cold start, gentle on memory, cheap to run at scale.
  • Flat, uniform output. Every row is a flat object with no nested structures — the dataset table shows clean values instead of "N fields" badges.
  • Prices exactly as the seller typed them. The site labels every price with a literal $ (its own label, and wrong — the currency is the Algerian Dinar). The Actor strips the $, keeps the number as typed in price, preserves the raw display string in priceRaw, and hardcodes currency: "DZD".
  • Sold listings on request. Items marked VENDU stay visible on the site; a single toggle includes them in results, tagged with their real status.
  • You only ever paste URLs. Every reference field takes a full page URL, straight from the browser's address bar. No IDs, no slugs, no values copied out of the address bar — and the Actor tells you exactly what it expected if a URL points at the wrong kind of page.

Where it goes beyond a listing feed

A search gives you the listings that match. The rest of the site is reachable too, and each surface is its own URL:

SurfaceWhat a run gives youWhat it is for
Store pageevery listing one seller has published, paginatedfollow a shop's stock
Listing pagethat listing in full: description, photo gallery, spec sheet, seller detailsa status or price check with the detail
Wilaya or commune pageeverything the site files under one wilaya (/state/…) or commune (/city/…) — 48 wilayaslocal inventory, not a keyword guess
Similar productsthe competing offers the site pairs with one listingprice against its real rivals
Category treethe taxonomy as published: 39 flat categories, no subcategoriespick the right category URL first

Paste the page you are on: a location grid and a category grid are different links on this site, and the Actor scrapes exactly the grid the link names.

Quick start

  1. Open this Actor in Apify Console.

  2. Click Try actor and paste any tijelabin.com page URL into URL (pageUrl) — the minimum valid input is one link, e.g.:

    { "pageUrl": "https://tijelabin.com/search?q=iphone" }
  3. Click Start. The Actor detects the task from the link and results land in the Dataset tab, one JSON object per listing.

Paste the URL of the page you'd open in a browser — a search result page, a category, a wilaya or commune page, a store, a listing — and the Actor runs the matching task. Results URLs start the walk at the page stated in the link and paginate forward. Explicit modes stay available in the legacy section below; { "startMode": "search", "searchQuery": "iphone" } works exactly as before.

Tutorial: a real workflow

1. Browse a category

Paste the category page URL into URL (pageUrl) — the task is detected automatically:

{ "pageUrl": "https://tijelabin.com/category/15/cars", "maxItems": 500, "maxPages": 20 }

The taxonomy is flat (39 categories, ids 1–39, no subcategories), so a URL like this is all you need. The equivalent explicit form (startMode: "category" + categoryUrl) behaves the same way.

This walks up to 20 pages of the cars category.

2. Browse a location

Tijelabin grids work per wilaya (/state/…) and per commune (/city/…). Paste either kind of URL into the same field — the path decides which grid is scraped:

{
"startMode": "location",
"locationUrl": "https://tijelabin.com/state/alger"
}

Or for a single commune:

{
"startMode": "location",
"locationUrl": "https://tijelabin.com/city/alger-centre"
}

3. Enrich a hand-picked set

Found a few listings you care about? Queue their URLs and get the full projection for each — description, category, location, seller block, image gallery, view counter, and posted date:

{
"startMode": "directUrls",
"startUrls": [
"https://tijelabin.com/products/8930/tecno-pova-6",
"https://tijelabin.com/products/9001"
]
}

Pasted URLs always return with their real status — if a listing was sold, the row says so, regardless of the sold-listings toggle.

4. Track a seller's store

Every seller on Tijelabin — individual or business — has a store page. Paste it (or copy it from any listing row's sellerProfileUrl) and get the full inventory:

{
"startMode": "store",
"sellerUrl": "https://tijelabin.com/store/a693b29e82c2ac"
}

You get the seller's full listing grid — every row is one of their listings, in the same flat shape as every other mode.

5. Find similar products

Every detail page on the site carries a "Produits similaires" section. Paste one or more listing URLs to pull those products:

{
"startMode": "similar",
"startUrls": [
"https://tijelabin.com/products/8930/tecno-pova-6",
"https://tijelabin.com/products/9001"
]
}

Each returned row carries similarToId — the numeric ID of the source listing it came from — so results from several URLs stay easy to group.

6. Snapshot the whole taxonomy

Category tree snapshot (categories) emits every category the site has — one node per category with its categoryId, categoryLabel and url:

{ "startMode": "categories" }

The taxonomy is flat (39 categories, no subcategories), so each node is a top-level category. Use a node's url as the Category page URL (categoryUrl) input for a Browse a category (category) run.

Input

Only URL (pageUrl) is needed for a run; everything else has defaults. Paste any tijelabin.com page URL straight from the browser's address bar — the Actor detects the task and rejects URLs it can't act on with a message telling you exactly what to paste instead.

The Console form shows the URL field on its own, followed by a collapsible Legacy inputs (advanced) section with the explicit per-task controls, and two more collapsible sections — Limits & performance and Output & debugging. JSON/API callers use the key names; the Console form shows the Label names.

Main input

Label (key)DescriptionDefault
URL (pageUrl)Any tijelabin.com page URL: a search page (/search?q=…, the link's keyword and page number carry over), a category page (/category/{id}/{slug}), a wilaya or commune page (/state/{slug} or /city/{slug}), a store page (/store/{hexId}), or a listing page (/products/{id}/{slug})—

Legacy inputs (advanced)

The explicit per-task controls from earlier versions. New runs only need the URL field above; these keep working for existing integrations and cover the tasks a pasted URL can't express.

Label (key)DescriptionDefault
What to scrape (startMode)auto (default) detects the task from the pasted URL. Explicit values for everything a URL can't express: search / category / directUrls / location / store / similar / categories. In explicit modes each surface-specific field falls back to the URL field when its own field is emptyauto
Search keyword (searchQuery)Search term, when What to scrape (startMode) = Search by keyword (search)—
Category page URL (categoryUrl)The category to browse, when What to scrape (startMode) = Browse a category (category). Paste the category page URL from the address bar (e.g. https://tijelabin.com/category/15/cars)—
Location page URL (locationUrl)The wilaya or commune to browse, when What to scrape (startMode) = Browse a location (location). Paste a /state/… or /city/… page URL from the address bar—
Store page URL (sellerUrl)The seller to scrape, when What to scrape (startMode) = Seller store listings (store). Paste the store page URL from the address bar (e.g. https://tijelabin.com/store/a693b29e82c2ac)—
Listing URLs (startUrls)One or more listing page URLs (e.g. https://tijelabin.com/products/8930/tecno-pova-6), used by both modes that start from a listing page: Specific listing URLs (directUrls, full detail data per URL) and Similar products (similar, similar items per URL)—
Language (locale)Request language. Only affects the site's interface labels — listing titles, descriptions and prices are seller-entered and never translatedfr

Limits & performance

Label (key)DescriptionDefault
Maximum results (maxItems)Max listings to push. Applies in every mode. 0 = no cap200
Maximum pages (maxPages)Max page requests. Up to 48 listings per page on grid modes (store grids run smaller). 0 = no cap. The Actor stops on its own when a grid runs out — the site's page counter over-counts on search pages because it includes sold items20
Requests per minute (maxRequestsPerMinute)Requests per minute. The polite default keeps the site happy long-term — higher values make blocking more likely, not runs faster.40

Output & debugging

Label (key)DescriptionDefault
Include sold listings (includeSold)Also emit sold items, tagged status: "sold". Off (default), they are skipped. No effect in Specific listing URLs (directUrls) — pasted URLs always return with their real statusfalse
Skip duplicate listings (dedupe)Skip listings already pushed earlier in this run. With Include sold listings (includeSold) on, an item can appear in both the active grid and the sold section — the active copy winstrue
Debug: include raw source record (debugIncludeRaw)Add a raw field with the original source record to each row — useful while you map a field you need; makes the dataset much larger.false

Output

One JSON object per listing, in the Dataset tab. Every field is a scalar or a list of scalars — no nested objects — so the dataset table view shows clean values instead of "N fields" badges.

The dataset has a single view:

  • Listings — the default. Grid projection for search / category / location / store runs, full projection for Specific listing URLs (directUrls) runs, card projection with similarToId for Similar products (similar) runs, and category nodes (__type: "tijelabin_category") for Category tree snapshot (categories) runs.

Listing row

Specific listing URLs (directUrls) runs produce the fullest row (grid modes fill only the first block; null where a surface has no data):

{
"id": "8930",
"url": "https://tijelabin.com/products/8930/tecno-pova-6",
"title": "tecno pova 6",
"description": "Le TECNO POVA 6 est livré avec un grand écran AMOLED de 6,78 pouces…",
"price": 40400,
"priceRaw": "40400",
"currency": "DZD",
"categoryId": "6",
"categoryLabel": "Accessoires homme",
"stateSlug": "alger",
"stateName": "Alger",
"citySlug": "alger-centre",
"cityName": "Alger Centre",
"images": ["https://tijelabin.com/storage/products/hdQuality/2026/08/hash.jpg"],
"primaryImageUrl": "https://tijelabin.com/storage/products/hdQuality/2026/08/hash.jpg",
"imageCount": 6,
"sellerId": "a68e2cdfb2bea2",
"sellerName": "kacem",
"sellerMemberSince": "2025-10-01",
"sellerProfileUrl": "https://tijelabin.com/store/a68e2cdfb2bea2",
"postedAt": "2026-08-29",
"views": 27,
"status": "active",
"similarToId": null,
"scrapedAt": "2026-08-31T12:00:00.000Z"
}

Category node

Category tree snapshot (categories) runs produce one node per category — no price, images or seller fields:

{
"__type": "tijelabin_category",
"id": "3",
"url": "https://tijelabin.com/category/3/woman-fashions",
"categoryId": "3",
"categoryLabel": "Woman fashions",
"scrapedAt": "2026-09-17T12:00:00.000Z"
}

The label is derived from the URL slug (the site's category sitemap carries no display name), and the url is what you paste into Category page URL (categoryUrl) for a Browse a category (category) run.

Field-by-field

  • price — numeric price in Algerian Dinar, exactly as the seller typed it with the site's $ label stripped. 0 marks placeholder prices like $00.
  • priceRaw — the displayed price string with the $ stripped — the audit trail that preserves leading-zero junk ("00") and separators the seller typed.
  • currency — constant "DZD". The site renders prices with a $ label and emits USD in its structured data; both are wrong, and the value is emitted as typed.
  • categoryId / categoryLabel — the listing's category, from the detail page's breadcrumb (ids 1–39). Grid cards don't carry category data.
  • stateSlug / stateName / citySlug / cityName — the listing's wilaya and commune. Site spellings are passed through as-is (not normalized); grid cards carry the commune name, the full set needs a detail page.
  • images / imageCount — grid cards carry the single thumbnail; detail pages carry the full gallery at HD quality (with low-quality fallbacks).
  • primaryImageUrl — the first image URL (images[0]), surfaced as its own scalar so the dataset table renders an image thumbnail. The images array still carries the full list for programmatic use — arrays render as "N items" badges in the table view.
  • sellerId / sellerName / sellerMemberSince / sellerProfileUrl — the seller's store ID, display name, membership date (month precision — the site renders only "Rejoint Oct 2025" → 2025-10-01) and store page.
  • postedAt — the date the listing was posted, day precision (YYYY-MM-DD — the site renders no time component).
  • views — the detail-page view counter. A live counter on the site, so treat it as a point-in-time value, not a stable metric.
  • status — active for regular listings, sold for items marked VENDU (only when Include sold listings (includeSold) is on, or when a pasted URL in Specific listing URLs (directUrls) resolves to a sold item).
  • similarToId — Similar products (similar) rows only: the numeric ID of the source listing the "Produits similaires" section came from. null on every other row.
  • scrapedAt — ISO-8601 timestamp of when the row was captured.

Notes and limits

  • No seller contact info exists on the web site. Tijelabin directs all buyer contact to its mobile app; no phone number or WhatsApp link is exposed on any page, logged in or not. The Actor's output carries no contact fields.
  • Dates are day- or month-precision. The site renders DD/MM/YYYY with no time, so postedAt is YYYY-MM-DD; sellerMemberSince is month precision (YYYY-MM-01).
  • View counters are live. views reflects the moment of scraping, not a stable metric.
  • Pagination stops on an empty grid. The site's page counter over-counts on search pages (it includes sold items); the Actor walks until the grid is actually exhausted. Maximum results (maxItems) and Maximum pages (maxPages) cap every run.
  • Dead listings (removed entirely) return HTTP 410 and are skipped with a log line.
  • Titles, descriptions and prices are seller-entered and never translated — the language option only affects site chrome.

FAQ

Can I get a seller's phone number? No — the platform gates all contact behind its mobile app. There is nothing to scrape on the web.

Why is priceRaw sometimes "00"? Sellers type placeholder prices; the site tolerates them. priceRaw is the audit trail, price the parsed number.

Can I scrape the whole site? Yes, practically: category pages 1–39 with a high Maximum pages (maxPages) cover the active inventory, and the run stays idempotent thanks to ID dedupe.

How fast should I run it? The site applies no bot protection, but keep Requests per minute at its default (40) or lower to stay a good citizen.

How do I find the URLs to paste? Open the search, category, location, store or listing page on tijelabin.com and copy the address from the browser's address bar — e.g. https://tijelabin.com/category/15/cars, https://tijelabin.com/state/alger, https://tijelabin.com/store/a693b29e82c2ac, https://tijelabin.com/products/8930/tecno-pova-6. There is no need to read IDs or slugs out of the URL — paste the whole thing. To get the full category list at once, run Category tree snapshot (categories) and read the url column.

My run hit maxItems early. Why? Either the dataset already contains those listing IDs (dedupe is on by default) or the site returned fewer unique results than expected. Try raising Maximum results (maxItems) and Maximum pages (maxPages), or turning Skip duplicate listings (dedupe) off to see raw counts.

Contact

Bug reports, feature requests, or a custom scraper for a site not yet covered? Open an issue on the Actor's Apify Console page or message the maintainer directly there.