Malt APImalt.fr ↗
Search Malt.fr freelancer profiles, retrieve detailed profile data, and get autocomplete suggestions via 3 structured API endpoints.
What is the Malt API?
The Malt.fr API gives developers structured access to freelancer data across 3 endpoints covering search, profile detail, and autocomplete. search_freelancers returns up to 24 profiles per page with fields like pricing, skills, location, availability, ratings, and badges. get_profile retrieves a single freelancer's full profile including languages spoken, experience headline, and badge tier. autocomplete helps surface relevant specialty terms from a partial query string.
curl -X GET 'https://api.parse.bot/scraper/f4ca74ee-b27a-4850-8f6d-9c37af345224/search_freelancers?query=developpeur+frontend&location=Paris' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace malt-fr-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Malt Freelancer Marketplace — search freelancers, view profiles, autocomplete."""
from parse_apis.malt_freelancer_marketplace_api import Malt, ProfileNotFound
client = Malt()
# Autocomplete: discover specialties matching a prefix
suggestion = client.suggestions.search(query="dev")
print(f"Suggestions for 'dev': {suggestion.suggestions[:5]}")
# Search freelancers by expertise, capped to 5 results
for freelancer in client.freelancers.search(query="developpeur frontend", location="Paris", limit=5):
print(f"{freelancer.first_name} — {freelancer.headline}, {freelancer.location.city}")
# Drill into the first result's detailed profile
first = client.freelancers.search(query="designer graphique", limit=1).first()
if first:
profile = client.freelancerprofiles.get(username=first.profile_url.split("/")[-1])
print(f"Profile: {profile.full_name}, {profile.headline}")
print(f" Rating: {profile.rating}, Reviews: {profile.review_count}")
for lang in profile.languages:
print(f" Language: {lang.name} ({lang.level})")
# Typed error handling for a non-existent profile
try:
client.freelancerprofiles.get(username="this-user-does-not-exist-xyz")
except ProfileNotFound as exc:
print(f"Profile not found: {exc.username}")
print("Exercised: suggestions.search / freelancers.search / freelancerprofiles.get / ProfileNotFound")
Search for freelancers by keyword or expertise on Malt.fr. Returns up to 24 profiles per page with name, headline, skills, pricing, location, ratings, and availability. Pagination metadata indicates total results and page count. Location filter narrows results to a specific city.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query for freelancer expertise (e.g., 'developpeur frontend', 'designer graphique', 'data scientist') |
| location | string | City name to filter results by location (e.g., 'Paris', 'Lyon') |
{
"type": "object",
"fields": {
"query": "string - the search query submitted",
"profiles": "array of freelancer profile summaries with id, first_name, headline, profile_url, photo_url, location, price, availability, stats, badges, skills",
"search_id": "string - unique identifier for this search",
"pagination": "object with current_page, total_pages, total_elements, first_item, last_item",
"search_type": "string - search scope type (e.g. HOST_COUNTRY_REMOTE)"
},
"sample": {
"data": {
"query": "developpeur frontend",
"profiles": [
{
"id": "63104ac972c8fb347f0b250f",
"price": {
"amount": 480,
"currency": "EUR",
"formatted": "480 €",
"visibility": "VISIBLE"
},
"stats": {
"rating": 5,
"missions_count": 9,
"recommendations_count": 5
},
"badges": [
"SUPER_MALTER_2",
"SUPER_MALTER_1",
"SUPER_MALTER_3"
],
"skills": [
{
"label": "Développeur web",
"certified": false
},
{
"label": "Next.js",
"certified": false
},
{
"label": "React.js",
"certified": false
}
],
"headline": "Développeur frontend | React.JS | NextJS",
"location": {
"city": "Paris",
"type": "EVERYWHERE",
"country": "France",
"country_code": "FR"
},
"photo_url": "https://dam.malt.com/daf222f1-2786-4cc8-b4c6-84865d7af29b",
"first_name": "Virgile",
"profile_url": "https://www.malt.fr/profile/virgilerietsch",
"availability": {
"status": "AVAILABLE_AND_VERIFIED",
"frequency": "FULL_TIME"
}
}
],
"search_id": "6a2a4a5c915e0e5536bf0e8e",
"pagination": {
"last_item": 24,
"first_item": 1,
"total_pages": 25,
"current_page": 1,
"total_elements": 600
},
"search_type": "HOST_COUNTRY_REMOTE"
},
"status": "success"
}
}About the Malt API
Searching Freelancers
The search_freelancers endpoint accepts a query string (e.g., developpeur frontend, data scientist) and an optional location filter (e.g., Paris, Lyon). Each call returns up to 24 profile objects from the first results page. Profile objects include id, first_name, headline, profile_url, photo_url, location, price, availability, stats, badges, and skills. The response also includes a search_id, a search_type field indicating scope (such as HOST_COUNTRY_REMOTE), and a pagination object with current_page, total_pages, total_elements, first_item, and last_item.
Detailed Profile Lookup
The get_profile endpoint takes a username exactly as it appears in the Malt.fr profile URL. It returns a richer view of a single freelancer: full_name, headline, skills array, languages (each with name and level), location (city, country, country_code), price (amount, currency, and a hidden boolean), rating out of 5, and a badge string indicating tier (e.g., SUPER_MALTER_L3, SUPER_MALTER_L2).
Autocomplete Suggestions
The autocomplete endpoint accepts a short query prefix such as dev, design, or data and returns up to 15 suggestion strings covering freelancer specialties and skill terms. This is useful for building type-ahead search inputs or normalizing query terms before passing them to search_freelancers.
The Malt API is a managed, monitored endpoint for malt.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when malt.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official malt.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a freelancer discovery tool filtered by skill and city using
search_freelancerswithqueryandlocationparams - Aggregate pricing data across freelancer profiles to benchmark typical day rates by specialty
- Identify top-rated Malt freelancers by parsing
ratingandbadgefields fromget_profile - Power a type-ahead search component using the
autocompleteendpoint to normalize user input - Monitor a freelancer's availability status and pricing over time via periodic
get_profilecalls - Compare skill sets across multiple profiles by collecting the
skillsarray from search results - Build a language-filtered freelancer shortlist using the
languagesfield returned byget_profile
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Malt.fr offer an official developer API?+
What does `search_freelancers` return beyond basic name and title?+
price, availability, location, stats, badges, and a skills array alongside the freelancer's headline and profile_url. The response-level pagination object tells you total_pages and total_elements so you know the scope of results, and search_type indicates whether the search covers the host country, remote, or another scope.Does `get_profile` return a freelancer's work history or project portfolio?+
get_profile covers identity fields, skills, languages, location, price, rating, and badge tier. Work history and portfolio items are not exposed. You can fork the API on Parse and revise it to add an endpoint targeting that profile section.How does pagination work with `search_freelancers`?+
pagination object containing current_page, total_pages, total_elements, first_item, and last_item. Paginating through subsequent pages is not currently supported by this endpoint. You can fork the API on Parse and revise it to accept a page parameter and return additional result pages.Can I filter search results by price range or availability status?+
search_freelancers endpoint currently accepts only query and location as input parameters. Price and availability data are present in the response fields but cannot be used as pre-query filters through this API. You can fork the API on Parse and revise it to pass additional filter parameters to the endpoint.