El Mouchir Scraper (elmouchir.dz) avatar

El Mouchir Scraper (elmouchir.dz)

Pricing

from $0.47 / 1,000 results

Go to Apify Store
El Mouchir Scraper (elmouchir.dz)

El Mouchir Scraper (elmouchir.dz)

Scrape elmouchir.dz, the Algerian Chamber of Commerce company directory: 79,000+ firms with address, wilaya, sector, phone and e-mail. Search by keyword, browse a sector or a wilaya, open a company page or resolve a name.

Pricing

from $0.47 / 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

19 hours ago

Last modified

Categories

Security

Limited permissions

Share

El Mouchir Scraper

El Mouchir is the online directory of the Algerian Chamber of Commerce and Industry: tens of thousands of Algerian companies with their address, their activity and their phone numbers and e-mail addresses.

This Actor reads that directory and puts the companies in your dataset. Fill in a keyword, a sector or a wilaya and you get back the matching companies — with their contact details, ready to use.

What you can scrape

  • Companies by keyword — every company whose name or address matches what you are looking for.
  • Companies of a sector — the whole "Transport", "Café & Restaurant", "Construction" … branch of the directory.
  • Companies of a wilaya — everything the directory files under Oran, Blida, Sétif …
  • One company in full — name, address, precise wilaya, logo, phone numbers and e-mail addresses.
  • The tree of sectors and activities — the directory's own menu, with the number of companies in every node.
  • A name lookup — resolve a company or a wilaya name to the directory's own id before you scrape it.

Why this Actor

  • The contact details come out readable: phone numbers and e-mail addresses, not pictures.
  • The filters compose: a keyword inside a sector inside a wilaya is one run.
  • The directory throttles hard. The Actor works with it instead of against it, so a run finishes instead of dying half way.
  • You always know what you got: the run tells you how many companies the directory said there were, and how many rows came out.

Where it goes beyond a company list

A keyword search returns matching companies. The directory has more structure than that, and the Actor reads all of it:

SurfaceWhat a run gives youWhat it is for
One company in fullname, address, precise wilaya, logo, phone numbers and e-mail addresses as readable textoutreach without a second lookup
A sector branchevery company the directory files under that sectorsize a market before you contact it
A wilayaeverything filed under Oran, Blida, Sétif …local prospecting
The sector and activity treethe directory's own menu, with the number of companies under every nodescope a segment, or find the sector URL to paste
Composable filtersa keyword inside a sector inside a wilaya, in one runnarrow to exactly the segment you sell to

Quick start

The simplest run — every company that matches a keyword:

{ "searchQuery": "voyage" }

The keyword is the thing to fill in. A run that also wants the contact details (the default) and a hundred rows (the default) is done.

Tutorial: a real workflow

Say you want to reach the travel agencies in Oran, with their phone numbers.

1. Find the sector you want

The directory groups its companies into sectors and activities. Run the Actor in the sector catalog mode to get the whole menu:

{ "startMode": "categories" }

The dataset holds one row per node: the sectors and the activities inside them, with the number of companies each one holds. Look for "Agences de voyages et de tourisme" and note its sector — for the example below that is https://elmouchir.dz/secteur/5563/transport-tourisme-transit-hotellerie.

2. List the sector

Paste the sector page into Sector or activity URL:

{ "categoryUrl": "https://elmouchir.dz/secteur/5563/transport-tourisme-transit-hotellerie" }

You get every company of that sector, with their names, addresses and contact details. The run log tells you how many the directory said there were.

A sector page has an address, so you can also open it in your browser and paste the address bar into Page URL — the Actor works out that it is a sector.

3. Narrow it to a wilaya

Add the wilaya. Its name is enough — the Actor looks it up:

{
"categoryUrl": "https://elmouchir.dz/secteur/5563/transport-tourisme-transit-hotellerie",
"wilaya": "Oran"
}

Now you have the travel agencies of that sector in Oran. You can also give the wilaya id instead of its name ("31") if you know it — it is the number in the wilaya's own address, https://elmouchir.dz/wilaya/31/oran.

4. Narrow it to a keyword

One more field, and the three compose: the travel agencies of that sector in Oran whose name mentions "voyage".

{
"categoryUrl": "https://elmouchir.dz/secteur/5563/transport-tourisme-transit-hotellerie",
"wilaya": "Oran",
"searchQuery": "voyage"
}

The keyword is what to type in the directory's own search box. It never becomes part of a link, so it always goes into the Search keyword field — there is no address to copy for a search.

5. Get every company's full record

The listing rows carry the directory's summary of a company. Open every company's own page to get its precise wilaya, its full address and its complete contact list:

{
"categoryUrl": "https://elmouchir.dz/secteur/5563/transport-tourisme-transit-hotellerie",
"wilaya": "Oran",
"includeDetails": true
}

That is one extra request per company, so it roughly doubles the run's time.

6. Scrape a hand-picked list of companies

If you already know the companies — from a previous run, a spreadsheet, a customer list — put their pages into Company URLs:

{
"startUrls": [
"https://elmouchir.dz/entreprise/94249/tadjra-voyage",
"https://elmouchir.dz/entreprise/94262/el-massa-voyages"
]
}

Each company comes back as one row, with everything the directory knows about it.

7. Look a name up before you scrape it

Not sure how the directory spells a company? Ask it:

{ "startMode": "suggest", "searchQuery": "tadjra" }

The dataset holds the matches with the id the directory uses for them — the number in the company's own address. Switch Lookup scope to wilaya to do the same for a wilaya.

Input

Page URL (pageUrl) is the shortcut most runs use; every other field has a default. The Console form shows the main fields first, then the task selector, the limits and the debugging options.

Main input

Label (key)DescriptionDefault
Page URL (shortcut) (pageUrl)A shortcut: paste a sector, company or wilaya page, or the sector catalog, and the Actor works out what to do with it.—
Search keyword (searchQuery)The keyword the companies should match. Empty means the whole directory.—
Sector or activity URL (categoryUrl)The sector or activity to list, as its page URL.—
Wilaya (wilaya)A wilaya, by name (Oran) or by id (31).—
Company URLs (startUrls)The pages of specific companies to scrape.[]

The filters combine: keyword + sector + wilaya is one listing.

Task (advanced)

Label (key)DescriptionDefault
What to scrape (startMode)Which of the fields above the run is about. auto (the default) uses the most specific one you filled in.auto
Lookup scope (suggestScope)Whether a name lookup is about a company or a wilaya.company

Limits & performance

Label (key)DescriptionDefault
Maximum rows (maxItems)Max rows in the dataset. 0 = no cap. The main cost lever.200
Resolve phone and e-mail (includeContacts)Read the phone numbers and e-mail addresses.true
Open each company's page (includeDetails)Also open every company's own page.false
Companies per listing page (pageSize)Companies asked for per listing page. The directory only honours 5, 10, 20, 50 or 100; other values return 10 per page. 100 gives up to 300 companies per run (three pages).100
Maximum listing pages (maxPages)Listing pages per filter. The site lets an anonymous visitor read three.3
Maximum catalog pages (maxCatalogPages)Pages of the sector catalog to walk.25
Parallel connections (maxSessions)How many listings the Actor works on at the same time.10
Stagger between connections (seconds) (sessionStartDelaySecs)Seconds between the first requests of two connections.2
Retries per request (maxAttempts)Retries per request.7

Output & debugging

Label (key)DescriptionDefault
Skip repeated companies (dedupe)Put a company in the dataset only once.true
Debug: include the raw page data (debugIncludeRaw)Attach the unprocessed page data to every row.false

debugIncludeRaw puts the page data the row was built from next to the row itself. Turn it on to check a run, off to keep the dataset small.

Output

One dataset, three kinds of row, told apart by the __type field. Company rows have none.

Company row

ColumnWhat it holds
idThe company's number in the directory.
urlThe company's page.
nameThe company's name.
addressIts street address, as the directory prints it.
wilaya / wilayaIdThe wilaya the company belongs to. Filled in when the run is about a wilaya, or when includeDetails is on.
categoryName / categoryUrl / categoryIdThe sector or activity the company was listed under.
logoUrlThe company's logo.
badgeThe label the directory puts on the listing, when it has one.
phonesThe phone numbers. Empty when includeContacts is off.
emailsThe e-mail addresses. Empty when includeContacts is off.
sourceUrlThe listing the company was found on.
scrapedAtWhen the row was written.

Sector catalog row

__type is elmouchir_category. Holds the node's id, name, url, whether it is a sector or an activity, the parentId/parentName of the sector it belongs to, its imageUrl and the companyCount the directory gives for it.

Name lookup row

__type is elmouchir_suggest. Holds the id and the label of the match, and whether the lookup was about a company or a wilaya.

Notes and limits

  • The directory serves three listing pages per filter to an anonymous visitor. With pageSize at 100, a run therefore returns at most 300 companies per filter, and it tells you in the log when the directory stopped it. If you set a value it does not honour, it silently serves 10 per page, so the same run returns at most 30.
  • A keyword matches the directory's own search: a part of a word is enough ("voyage" finds "El Kawther Voyages").
  • A wilaya lists the companies the directory files under it. A company whose address is in another wilaya will not show up there, even though the run says the wilaya. Turn on includeDetails when you want the precise wilaya of every company instead.
  • Phone numbers and e-mail addresses come out as the directory holds them: a number may be written in several formats, and an address the directory does not publish stays empty.
  • The directory is slow to serve and slows down under load. A run of a few hundred companies with contacts takes minutes, not seconds.
  • Activities cannot be browsed. The catalog lists activities with a company count, but the directory's listing endpoint answers 0 companies for every activity id — it filters by sector only. An activity URL therefore stops the run with an explanation that names the sector to browse instead (the run's sector, keyword and wilaya modes are unaffected). Each of these activities was checked against the catalog: the catalog counts thousands of companies in them, and the listing answers none.

FAQ

How do I find the sector I want? Run the sector-catalog mode once: { "startMode": "categories" }. It gives you every sector and activity with the number of companies in it.

How do I find a company's page? Open the company in the directory and copy the address bar. The company's number is the last part of it.

Why is there no search URL to paste? The directory's search box does not change the address, so there is no link to copy. The keyword goes into Search keyword.

The run says it hit the page limit. Now what? The directory stopped serving after three listing pages. Narrow the run — a keyword, a wilaya or a sector — and run it again for the rest.

Can I scrape several sectors in one run? Yes, but each sector has its own page budget, so a run over many sectors takes longer. Keep maxItems in mind: it counts every row the run produces.

How do I get the most rows for the money? Turn includeDetails off and keep pageSize at 100. The directory serves at most three listing pages per filter, so one filter can return up to 300 companies. If you set another value, the directory may quietly serve only 10 per page.

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.