
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape job offers from ReKrute.com, Morocco's leading job board, by keyword, city or region with the site's filters (contract, experience, education, function, sector, remote work, date), or from search, company and job URLs. Get title, company, location, contract, requirements, full description and apply link.
Scrape job offers from ReKrute.com, Morocco's leading job board for managers and professionals, with listings in Tunisia, Senegal and other African markets too. Search by keyword and city or region with every filter the site offers, or paste search, company and job URLs, and get each offer with its company, location, contract, required experience and education, full description and the employer's apply link. No login, no browser: 20 jobs with full details in about 8 seconds and every open offer on the site (about 2,000) in about 2 minutes, for $0.60 per 1,000 jobs.
commercial, comptable, développeur) and a location (Casablanca, Rabat, Tanger, Tunisie...), or paste ReKrute.com search, company or job URLs.| Field | What it does |
|---|---|
queries | Job titles, skills or company names. Each keyword is a separate search. |
location | City, region or country. Regions and countries use the site's own filter; other places are matched in the offer text. |
startUrls | ReKrute.com search URLs (filters in the URL are kept), company pages or single job pages, in French or English. |
maxItems | Maximum number of jobs to save (default 20, 0 = no limit). |
regions, countries, contractTypes, telework, experienceLevels, studyLevels, functions, sectors | The site's own filters. Several values in one filter mean "any of them". |
postedWithin | Only jobs published in the last 24 hours, 3, 7, 14 or 30 days. Older jobs are skipped and not charged. |
includeDetails | Open every job for the full description and company details (on by default). |
language | fr (default) or en for the site's English version. |
{
"queries": ["commercial", "comptable"],
"location": "Casablanca",
"maxItems": 50,
"contractTypes": ["cdi"],
"experienceLevels": ["junior", "intermediate"],
"postedWithin": "7 days",
"includeDetails": true
}
| Field | Description |
|---|---|
jobId, url | ReKrute job id and job page |
title, company, companyId, companyUrl, companyLogo, isConfidential | Job title and employer (confidential offers hide the company) |
location, region, country | City, region and country of the job |
contractType, employmentType, telework, positions | Contract (CDI, CDD...), remote work and number of openings |
experience, studyLevel, function, sector, companySector | Requirements and classification as shown on the site |
summary | The short summary shown in the search results |
descriptionText, descriptionHtml, descriptionMarkdown | Full description (mission, profile and any other section) |
missionText, profileText, benefitsText | The description split into its sections |
companyDescription, companyCulture, headOfficeAddress, personalityTraits | About the employer |
externalApplyUrl | The employer's own application page, when the offer has one |
datePosted, publishedFrom, publishedUntil, validThrough | Posting time (Morocco local time) and publication period |
extractedEmails, extractedPhones | Contacts written in the offer text, if any |
language, searchQuery, sourceUrl, position, detailFetched, scrapedAt | Run context |
Example (one job from a real run, long texts shortened):
[
{
"jobId": "187787",
"url": "https://www.rekrute.com/offre-emploi-commerciaux-b2c-b2b-hf-recrutement-crit-casablanca-187787.html",
"title": "Commerciaux B2C & B2B (H/F)",
"company": "CRIT",
"companyId": "3266",
"companyUrl": "https://www.rekrute.com/crit-emploi-recrutement-3266.html",
"companyLogo": "https://www.rekrute.com/rekrute/file/entrepriseLogo/recruiter_id/3266",
"isConfidential": false,
"companySector": "Recrutement / Intérim",
"location": "CASABLANCA",
"region": "Casablanca et région",
"country": "Maroc",
"positions": 1,
"contractType": "CDI",
"employmentType": "CDI",
"telework": "Non",
"experience": "Intermédiaire (3 à 5 ans) | Confirmé (5 à 10 ans)",
"studyLevel": "Bac +2 minimum",
"function": "Commercial / Vente / Export",
"sector": "Automobile / Motos / Cycles",
"summary": "CRIT Maroc recrute des Commerciaux B2C & B2B pour son client dans le secteur automobile. Vos missions incluent le développement des ventes, la prospection, e...",
"descriptionText": "Poste:\nPour le compte de notre client opérant dans le secteur automobile, nous recrutons des Commerciaux B2C et B2B dynamiques, ayant le goût du challenge et...",
"descriptionHtml": "<h3>Poste</h3><p> Pour le compte de notre client opérant dans le secteur automobile, nous recrutons des Commerciaux B2C et B2B dynamiques, ayant le go...",
"descriptionMarkdown": "### Poste\n\nPour le compte de notre client opérant dans le secteur automobile, nous recrutons des Commerciaux B2C et B2B dynamiques, ayant le goût du challeng...",
"missionText": "Pour le compte de notre client opérant dans le secteur automobile, nous recrutons des Commerciaux B2C et B2B dynamiques, ayant le goût du challenge et une fo...",
"profileText": "- Formation Bac+2 à Bac+3 en commerce, vente, gestion ou équivalent.\n- Expérience en développement commercial, idéalement dans le secteur automobile.\n- Une e...",
"benefitsText": null,
"companyDescription": "CRIT Maroc, filiale du Groupe CRIT, l'un des leaders du travail temporaire et du recrutement en France et à l'international.\n\nLe groupe CRIT compte aujourd’h...",
"companyCulture": null,
"personalityTraits": [],
"headOfficeAddress": "67 Bd Al Massira Al Khadra 20100 Casablanca",
"externalApplyUrl": null,
"datePosted": "2026-10-21T18:46:21",
"publishedFrom": "2026-10-21",
"publishedUntil": "2026-12-21",
"validThrough": "2026-12-21T18:46:21",
"likes": 1,
"extractedEmails": [],
"extractedPhones": [],
"language": "fr",
"searchQuery": "commercial",
"sourceUrl": "https://www.rekrute.com/offres.html?s=3&p=1&o=1&query=commercial®ionId%5B%5D=4",
"position": 1,
"detailFetched": true,
"scrapedAt": "2026-10-21T21:28:42.545Z"
}
]
You pay $0.60 per 1,000 jobs ($0.0006 per job saved), plus the small platform usage of the run (compute and proxy traffic). For example, 1,000 jobs with full details cost about $0.64: $0.60 in job fees plus about $0.04 of platform usage (measured: $0.035 for 1,000 jobs). A daily alert of 50 new jobs costs about 3 cents. Jobs left out by the date filter, expired jobs and failed pages are never charged, and a run stops cleanly when it reaches your maximum charge.
Is it legal to scrape ReKrute.com? The scraper only reads public job offers that anyone can see without an account. Check the site's terms and the data-protection rules that apply to you (for example Morocco's law 09-08 or the GDPR) before using personal data such as contact details in offers.
Do I need a ReKrute account, cookies or a proxy? No account or cookies. Datacenter proxies are used by default and work well; if they are ever refused, the run switches to Moroccan residential proxies by itself.
How many jobs can I get? Every job that matches your search: the site lists about 2,000 open offers in total, and the scraper pages through all of them when Max results is 0.
Why is a field empty? Fields are filled only when the offer has them: confidential offers hide the company, many offers have no external apply link, and some have no benefits section or personality traits. With "Include full job details" off, description and company fields stay empty.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it (for example daily with "Posted within: 24 hours"), and read the results through the API or integrations.
I used a similar actor on another platform. Will my input work?
Mostly yes: keyword, location, startUrl, results_wanted and dateFilter are understood too.
datePosted is the site's own timestamp in Morocco local time; search pages only show the publication day.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayOptionalSearch keywords
Job titles, skills or company names, one per line, e.g. commercial, comptable, développeur, software engineer. Each keyword is a separate search; words inside one keyword must all match (accents are ignored). Leave empty to list every job that matches the location and filters.
locationstringOptionalLocation
A city, region or country, e.g. Casablanca, Rabat, Tanger, Marrakech, Tunis, Tunisie, Sénégal. Known regions and countries use the site's own filter; any other place is added to the search words (the site matches the city written in each offer). Leave empty for every location.
startUrlsarrayOptionalSearch, company or job URLs
ReKrute.com pages copied from your browser: searches (https://www.rekrute.com/offres.html?query=comptable, filters in the URL are kept), company pages (https://www.rekrute.com/-emploi-recrutement-.html) or single jobs (https://www.rekrute.com/offre-emploi-...-.html). English pages (/en/...) work too.
maxItemsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches. 0 means no limit (every matching job).
regionsarrayOptionalRegions
Only jobs in these regions (any of them).
countriesarrayOptionalCountries
Only jobs in these countries (any of them). Most offers are in Morocco; the site also lists jobs in Tunisia, Senegal and a few other countries.
contractTypesarrayOptionalContract types
Only these contract types (any of them).
teleworkarrayOptionalRemote work
Only jobs with these remote-work options (any of them).
experienceLevelsarrayOptionalExperience levels
Only jobs asking for these experience levels (any of them).
studyLevelsarrayOptionalStudy levels
Only jobs asking for these education levels (any of them).
functionsarrayOptionalJob functions
Only jobs in these functions (any of them), with the site's French names.
sectorsarrayOptionalCompany sectors
Only jobs from companies in these sectors (any of them), with the site's French names.
postedWithinenumOptionaldefault "any"Posted within
Only jobs published in this period (by publication day, Morocco time). Older jobs are skipped and not charged.
includeDetailsbooleanOptionaldefault trueInclude full job details
Open each job for the full description (text, HTML and Markdown), mission and profile, company description and culture, exact posting time, head-office address, desired personality traits and the employer's own apply link. Turn off for a faster list with title, company, location, contract, experience, education, dates and the short summary only.
languageenumOptionaldefault "fr"Language
Language of the job pages. 'English' uses the site's English version (/en/), where offers, labels and contract types are translated.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for ReKrute.com. If they are refused repeatedly, the run switches to Moroccan residential proxies by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| jobId | string | null | |
| url | string | null | |
| title | string | null | |
| company | string | null | |
| companyId | string | null | |
| companyUrl | string | null | |
| companyLogo | string | null | |
| companySector | string | null | |
| location | string | null | |
| region | string | null | |
| country | string | null | |
| contractType | string | null | |
| employmentType | string | null | |
| telework | string | null | |
| experience | string | null | |
| studyLevel | string | null | |
| function | string | null | |
| sector | string | null | |
| summary | string | null | |
| descriptionText | string | null | |
| descriptionHtml | string | null | |
| descriptionMarkdown | string | null | |
| missionText | string | null | |
| profileText | string | null | |
| benefitsText | string | null | |
| companyDescription | string | null | |
| companyCulture | string | null | |
| headOfficeAddress | string | null | |
| externalApplyUrl | string | null | |
| datePosted | string | null | |
| publishedFrom | string | null | |
| publishedUntil | string | null | |
| validThrough | string | null | |
| language | string | null | |
| searchQuery | string | null | |
| sourceUrl | string | null | |
| scrapedAt | string | null | |
| isConfidential | boolean | null | |
| detailFetched | boolean | null | |
| positions | number | null | |
| likes | number | null | |
| position | number | null | |
| personalityTraits | array | null | |
| extractedEmails | array | null | |
| extractedPhones | array | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved job offer (full details included). | $0.0006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/rekrute-scraper').call({
"queries": [
"commercial"
],
"location": "Casablanca",
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/rekrute-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/rekrute-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
15 engineering offers in the Rabat region with the full description, company details and requirements.
15 sales offers on a permanent contract (CDI) asking for 1 to 5 years of experience.
Offers from a company page and from a ReKrute search URL copied from the browser.
10 engineer offers from the site's English version, with translated labels.
40 offers in the Casablanca region from the search pages only: title, company, contract, experience, education and dates.
Offers ReKrute lists in Tunisia, with full details.
Sales offers published in the last 7 days, older ones are skipped and not charged.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.