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

Scrape Malt freelancers by keyword, city or profile URL: daily rates, skills, ratings, missions, availability, badges, and optional full profiles with languages and client reviews. 12 markets, no login needed.
Get freelancer profiles from Malt, Europe's freelance marketplace, by keyword, city or profile URL: name, headline, daily rate, skills, rating, missions, availability, Super Malter badge and the profile link. Switch on full profiles to add the description, experience level, languages, answer rate and client reviews. No login, no account, and 20 freelancers take about 5 to 10 seconds.
developpeur python), or paste Malt profile or search URLs.| Field | What it does |
|---|---|
searchQueries | Skills or job titles to search, one search per keyword |
startUrls | Malt profile URLs (/profile/<name>) or search URLs (/s?q=...) from any Malt site |
country | fr, de, es, be, nl, ch, lu, gb, it, pt, at or all |
maxResults | Most freelancers per keyword or search URL (0 = as many as the city fan-out finds) |
cities | Search near these cities instead of the whole country |
expandToCities | Repeat a keyword near cities, then across a map grid, when it needs more than 24 freelancers (on by default) |
minDailyRate / maxDailyRate | Daily rate range |
minRating, minMissions | Quality filters |
availability, locationType, experienceLevel, superMalterOnly | Availability, remote only, minimum experience, Super Malters only |
includeDetails | Add the full public profile and reviews to each freelancer |
{
"searchQueries": ["developpeur python", "data engineer"],
"country": "fr",
"cities": ["Paris", "Lyon"],
"maxResults": 50,
"minDailyRate": 400,
"maxDailyRate": 800,
"availability": "AVAILABLE",
"includeDetails": true
}
One row per freelancer. The main fields:
| Field | Description |
|---|---|
fullName, firstName, lastName | Name as shown on Malt (the last name comes with full profile details or profile URLs) |
headline | The freelancer's title |
dailyRate, currency, minDailyRate | Daily rate shown on the profile, and the lowest rate they accept |
city, countryCode, locationType | Where they are based and whether they work remote only (REMOTE) or also on site (EVERYWHERE) |
rating, missionsCount, reviewsCount | Malt rating (empty when no rated mission yet), completed missions, rated reviews |
availability, frequency, nextAvailabilityDate | Availability now, full time or part time, next availability |
badges, isSuperMalter, superMalterLevel | Malt badges |
skills, certifiedSkills | Skills listed on the profile |
profileUrl, photoUrl | Links |
searchQuery, searchLocation, searchRank | Which search found the freelancer and at what position |
description, experienceLevel, languages, answerRate, averageAnswerTime, categories, zipCode, latitude, longitude, ratingsDetail, reviews | Full profile details (with includeDetails or for profile URLs) |
Example (fictional person, real shape):
{
"id": "6612a0f3c1d2e3f4a5b6c7d8",
"profileUrl": "https://www.malt.fr/profile/camillemartin",
"fullName": "Camille Martin",
"headline": "Développeuse Python / Django senior",
"city": "Lyon",
"countryCode": "FR",
"locationType": "EVERYWHERE",
"dailyRate": 550,
"currency": "EUR",
"availability": "AVAILABLE_AND_VERIFIED",
"frequency": "FULL_TIME",
"rating": 4.9,
"missionsCount": 18,
"reviewsCount": 9,
"badges": ["SUPER_MALTER_2"],
"isSuperMalter": true,
"superMalterLevel": 2,
"skills": ["Python", "Django", "PostgreSQL", "Docker", "AWS"],
"searchQuery": "developpeur python",
"searchLocation": "Lyon",
"searchRank": 3,
"experienceLevel": "EXPERT",
"languages": [{"code": "fr", "name": "Français", "level": "NATIVE"}, {"code": "en", "name": "Anglais", "level": "FLUENT"}],
"answerRate": 100,
"averageAnswerTime": "LESS_THAN_2H",
"minDailyRate": 450,
"ratingsDetail": {"general": 4.9, "quality": 5, "delay": 4.8, "communication": 5},
"reviews": [{"rating": 5, "comment": "Great collaboration, delivered on time.", "clientName": "Julien", "clientCompany": "Example SAS", "clientJobTitle": "CTO", "date": "2026-05-12T09:30:00.000+00:00"}]
}
A run summary (searches made, freelancers found per keyword, inputs skipped) is saved to the OUTPUT record of the run's key-value store.
You pay $3.50 per 1,000 freelancers saved ($0.0035 each), with full profile details included at no extra cost and no start fee. Platform usage (compute and residential proxy traffic) is billed on top and is small: our test runs used under $0.001 for 20 to 100 freelancers.
Example: 1,000 freelancers ≈ $3.50 in results plus a few cents of usage.
Is it legal to scrape Malt? The scraper only reads public profile pages that anyone can open without an account. You are responsible for how you use the data, including data-protection rules such as the GDPR when you contact people.
Do I need a Malt account or a proxy? No account. The default residential proxy (in the market's country) is included in platform usage; Malt refuses datacenter IPs.
How many freelancers can I get per keyword? Malt shows visitors 24 freelancers per search. With the fan-out on, one broad keyword returned 1,000 unique freelancers in France in our tests (about 40 seconds), and 40 keywords returned over 11,000. Niche keywords stop at Malt's real number of matches, and the status message and run summary say how many each keyword produced.
Why is a field empty? Some fields only exist on some profiles (for example nextAvailabilityDate, zipCode or reviews), and rating is empty until the freelancer has a rated mission. Description, languages and reviews need Include full profile details.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it, and read results through the API or integrations.
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.
searchQueriesarrayOptionalSearch keywords
Skills or job titles to search, one per line (e.g. 'developpeur python', 'UX designer', 'consultant SAP'). Each keyword is a separate search. Malt shows 24 freelancers per search to visitors, so for more results the scraper repeats the search near the market's big cities and removes duplicates.
startUrlsarrayOptionalMalt URLs (profiles or searches)
Freelancer profile URLs (https://www.malt.fr/profile/) or search URLs (https://www.malt.fr/s?q=python) from any Malt country site. Profile URLs always return the full profile with reviews.
countryenumOptionaldefault "fr"Country
Malt market to search. France, Germany and Spain have their own Malt site; the others search malt.com limited to freelancers based in that country. 'All countries' searches malt.com without a country filter.
maxResultsintegerOptionaldefault 20Max freelancers per search
Most freelancers to save for each keyword or search URL. 0 means as many as the city fan-out can find. Each saved freelancer is one billed result.
citiesarrayOptionalCities
Search near these cities instead of the whole country (e.g. 'Lyon', 'Berlin', 'Bruxelles'). Each keyword is searched near each city. Accepts city names in any common spelling or 'latitude,longitude'. Leave empty to search the whole country.
expandToCitiesbooleanOptionaldefault trueFan out across big cities for more results
When a keyword needs more than the 24 freelancers of one search, repeat it near the country's cities and then across a map grid of the country (only freelancers based in the selected country are kept). Turn off to get just the first search page per keyword.
minDailyRateintegerOptionalMinimum daily rate
Keep freelancers whose daily rate is at least this amount (in the rate's currency, usually EUR).
maxDailyRateintegerOptionalMaximum daily rate
Keep freelancers whose daily rate is at most this amount.
minRatingnumberOptionalMinimum rating
Keep freelancers rated at least this (0 to 5). Freelancers without reviews are left out when this is set.
minMissionsintegerOptionalMinimum missions
Keep freelancers with at least this many completed Malt missions.
availabilityenumOptionaldefault ""Availability
Keep only freelancers who are available now, or available with an availability verified by Malt.
locationTypeenumOptionaldefault ""Work location
Keep freelancers who work remotely only, or those open to on-site missions too.
experienceLevelenumOptionaldefault ""Minimum experience level
Keep freelancers at or above this experience level. The level is read from each profile, so this filter makes the run slower.
superMalterOnlybooleanOptionaldefault falseSuper Malters only
Keep only freelancers who show a Super Malter badge (any level, 1 to 3).
includeDetailsbooleanOptionaldefault falseInclude full profile details
Also read each freelancer's public profile: last name, description, experience level, languages, answer rate and time, minimum rate, postcode and coordinates, categories, rating breakdown and up to 20 client reviews. No extra charge; runs take a little longer.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Proxy for the requests to Malt. Malt refuses datacenter IPs, so residential is the default; it uses exits in the selected country unless you pick one. If you choose datacenter and Malt refuses it, the run switches to residential 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 |
|---|---|---|
| photoUrl | any | Photo |
| fullName | any | Name |
| headline | any | Headline |
| city | any | City |
| countryCode | any | Country |
| dailyRate | any | Daily rate |
| currency | any | Currency |
| rating | any | Rating |
| missionsCount | any | Missions |
| availability | any | Availability |
| isSuperMalter | any | Super Malter |
| skills | any | Skills |
| profileUrl | any | Profile |
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 |
|---|---|---|
| Freelancer | One saved Malt freelancer profile (full profile details included when switched on). | $0.0035 |
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/malt-scraper').call({
"searchQueries": [
"developpeur python"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// 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/malt-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/malt-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.
Malt Germany: daily rates, skills, languages, answer rate and client reviews for web designers near Berlin.
Paste profile links to get each freelancer's full public profile, skills, rating breakdown and reviews.
One keyword fanned out across French cities past the 24-per-search limit, duplicates removed.
Daily rate range and availability filters on a French search.
United Kingdom market, searched near London.
A malt.es search URL, read with its keyword and market.
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.