Morocco Public Tenders Scraper
Pricing
from $5.00 / 1,000 results
Morocco Public Tenders Scraper
Scrape Morocco public tenders from the official procurement portal. Extract buyers, categories, locations, deadlines, references, submission rules, and documents.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
LIAICHI MUSTAPHA
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape active public tenders from Morocco's official public procurement portal at MarchesPublics.gov.ma. Collect contract opportunities, public buyers, tender objects, categories, locations, publication dates, submission deadlines, electronic-response rules, and public documents.
Features
- Extracts active Moroccan government tenders and procurement notices
- Captures full tender objects, references, procedures, and public buyers
- Collects works, supplies, and services categories
- Normalizes publication and submission dates to
YYYY-MM-DD - Extracts execution cities, provinces, and regions
- Identifies mandatory, optional, or unavailable electronic submission
- Detects electronic-signature requirements, simplified contracts, and environmental provisions
- Collects public withdrawal, question, submission, and message counts
- Optionally visits detail pages for tender dossier links
- Handles stateful WebForms pagination, duplicates, filtering, retries, and proxy sessions
Use Cases
- Sales intelligence: find public-sector contract opportunities for Moroccan suppliers
- Tender alerts: monitor keywords, buyers, cities, and approaching deadlines
- Procurement research: analyze demand by administration, category, and region
- Competitive intelligence: track public interest through withdrawals and submissions
- Lead generation: identify administrations buying specific products or services
- Automation: schedule searches and send new opportunities to email, Slack, Sheets, or a CRM
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | empty | Optional official search-result URLs |
searchQuery | string | empty | Keyword such as informatique, nettoyage, or construction |
currentOnly | boolean | true | Limit the portal search to current consultations |
category | string | all | Works, supplies, services, or all categories |
buyer | string | empty | Public buyer name contains this text |
location | string | empty | Execution location contains this text |
publishedAfter | string | empty | Inclusive publication filter in YYYY-MM-DD |
deadlineBefore | string | empty | Inclusive deadline filter in YYYY-MM-DD |
maxItems | integer | 100 | Maximum unique tenders to save |
maxPages | integer | 10 | Maximum stateful result pages to process |
resultsPerPage | integer | 100 | Portal page size; 500 requires 2 GB memory |
includeDetails | boolean | false | Visit detail pages for public document URLs |
paginationDelayMs | integer | 2000 | Polite delay before each next result page |
proxyConfiguration | object | Apify Proxy | Proxy configuration; residential IPs may be needed |
{"searchQuery": "informatique","currentOnly": true,"category": "Services","location": "Rabat","maxItems": 100,"maxPages": 10,"includeDetails": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Each dataset item represents one official tender notice:
{"tenderId": "1023594","organization": "g3h","reference": "15/SAP/2026","subject": "Travaux de pré-câblage réseaux informatiques et électriques...","buyer": "CHEF DE LA SURETE PROVINCIAL DE KENITRA","procedureCode": "AOO","procedure": "Appel d'offres ouvert","category": "Travaux","publicationDate": "2026-08-28","deadlineDate": "2026-11-03","deadlineTime": "11:00","locations": ["KENITRA"],"electronicSubmission": "required","signatureRequired": true,"simplifiedMarket": false,"environmentalProvisions": false,"withdrawals": 0,"questions": 0,"submissions": 0,"messages": 0,"documents": [],"detailUrl": "https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseDetailConsultation&refConsultation=1023594&orgAcronyme=g3h","source": "MARCHES_PUBLICS_GOV_MA","scrapedAt": "2026-08-30T12:00:00.000Z"}
The Actor also writes a STATS record to the default key-value store with page, result, filter, duplicate, detail, failure, and duration counts.
How to Use
- Open the Actor in Apify Console.
- Enter a product, service, industry, buyer, or location keyword.
- Keep the default 20-result prefill for a quick first run.
- Enable residential proxies if the portal rejects datacenter traffic.
- Enable
includeDetailsonly when tender dossier links are required. - Run the Actor and inspect the Output table.
- Export the dataset as JSON, CSV, Excel, or consume it through the API.
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("scraper_guru/morocco-public-tenders-scraper").call(run_input={"searchQuery": "informatique","category": "Services","maxItems": 100,"includeDetails": False,})for tender in client.dataset(run["defaultDatasetId"]).iterate_items():print(tender["reference"], tender["buyer"], tender["deadlineDate"])
Pricing
The intended pricing is $0.005 per saved tender, or $5 per 1,000 results, plus the small Actor-start charge shown by Apify. Filtered rows, duplicates, and failed requests do not create dataset-result charges.
Proxy traffic and compute usage depend on the selected Apify plan. Start with a small result limit before enabling detail enrichment.
Data Notes
- The source portal uses a web application firewall. Browser automation and an Apify residential proxy may be necessary.
- The Actor collects public procurement notices without authentication and does not submit bids.
includeDetailscollects public links; it does not download or parse tender PDF/ZIP contents.- Missing source fields remain
nullor empty arrays rather than being guessed. - Use reasonable schedules and limits to avoid unnecessary load on the official portal.
FAQ
Which Moroccan tenders can I collect?
The Actor targets public consultations visible on MarchesPublics.gov.ma, including works, supplies, and services.
Can I monitor one ministry, public company, or municipality?
Yes. Use searchQuery for source-side search and buyer for an exact contains filter.
Can I filter by city or region?
Yes. Enter a city, province, or region in location.
Why does the Actor use Playwright?
The portal uses browser sessions, a web application firewall, and stateful WebForms pagination that plain HTTP requests do not reliably handle.
Are tender documents included?
Enable includeDetails to collect public dossier links and published file sizes where available. The files themselves are not downloaded.
Can I schedule tender alerts?
Yes. Save the input as an Apify Task, run it daily, and connect the dataset to email, Slack, Google Sheets, a webhook, or your CRM.
This Actor is not affiliated with the Moroccan government. Use public procurement data lawfully and respect the source website's terms and capacity.