Morocco Public Tenders Scraper avatar

Morocco Public Tenders Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Morocco Public Tenders Scraper

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

LIAICHI MUSTAPHA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

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

FieldTypeDefaultDescription
startUrlsarrayemptyOptional official search-result URLs
searchQuerystringemptyKeyword such as informatique, nettoyage, or construction
currentOnlybooleantrueLimit the portal search to current consultations
categorystringallWorks, supplies, services, or all categories
buyerstringemptyPublic buyer name contains this text
locationstringemptyExecution location contains this text
publishedAfterstringemptyInclusive publication filter in YYYY-MM-DD
deadlineBeforestringemptyInclusive deadline filter in YYYY-MM-DD
maxItemsinteger100Maximum unique tenders to save
maxPagesinteger10Maximum stateful result pages to process
resultsPerPageinteger100Portal page size; 500 requires 2 GB memory
includeDetailsbooleanfalseVisit detail pages for public document URLs
paginationDelayMsinteger2000Polite delay before each next result page
proxyConfigurationobjectApify ProxyProxy 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

  1. Open the Actor in Apify Console.
  2. Enter a product, service, industry, buyer, or location keyword.
  3. Keep the default 20-result prefill for a quick first run.
  4. Enable residential proxies if the portal rejects datacenter traffic.
  5. Enable includeDetails only when tender dossier links are required.
  6. Run the Actor and inspect the Output table.
  7. Export the dataset as JSON, CSV, Excel, or consume it through the API.
from apify_client import ApifyClient
client = 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.
  • includeDetails collects public links; it does not download or parse tender PDF/ZIP contents.
  • Missing source fields remain null or 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.