freelancer APIfreelancer.de ↗
Access freelancer profiles, skills, ratings, and portfolio data from freelancer.de. Search by country, skill, rating, and online status across 4 endpoints.
What is the freelancer API?
The freelancer.de API exposes 4 endpoints for searching and retrieving freelancer profiles from Germany's freelancer marketplace. The search_freelancers endpoint returns paginated summaries with hourly rates, star ratings, skill sets, and portfolio counts, while get_freelancer_profile delivers full profile data including reputation history, qualifications, and verification status for any username found in search results.
curl -X GET 'https://api.parse.bot/scraper/24670630-9afb-4910-834d-c3c479d566be/search_freelancers?offset=0&skills=13&country=Germany&min_rating=4&online_only=false' \ -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 freelancer-de-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.
"""
Freelancer.de API Client
Get your API key from: https://parse.bot/settings
"""
from parse_apis.freelancer_de_api import FreelancerDE, Freelancer, FreelancerProfile, Skill
client = FreelancerDE()
# Search for Python skills to get skill IDs
python_skills = client.skills.search(query="Python")
for skill in python_skills:
print(skill.id, skill.name, skill.seo_url)
# Search for freelancers in Germany with high ratings
results = client.freelancers.search(country="Germany", min_rating=4)
for freelancer in results:
print(freelancer.username, freelancer.stars, freelancer.country, freelancer.hourlyrate)
# Navigate from a search result to the full profile
profile = freelancer.details()
print(profile.username, profile.display_name, profile.hourly_rate)
print(profile.reputation.entire_history.overall, profile.reputation.entire_history.reviews)
print(profile.location.country.name, profile.location.city)
print(profile.membership_package.name)
# Or fetch a profile directly by username
direct_profile = client.freelancerprofiles.get(username="w4web")
print(direct_profile.display_name, direct_profile.hourly_rate)
# List all available skills
all_skills = client.skills.list()
for skill in all_skills:
print(skill.id, skill.name, skill.category.name)
Search for freelancers by country, skills, rating, and online status. Returns paginated results with detailed freelancer summaries. Pagination is offset-based with up to 50 results per page. The count field gives the total matching freelancers.
| Param | Type | Description |
|---|---|---|
| offset | integer | Pagination offset for results (number of freelancers to skip). |
| skills | string | Comma-separated list of skill IDs to filter by (e.g. '13,3'). Skill IDs can be obtained from the get_skills or search_skills endpoints. |
| country | string | Country name to filter freelancers (e.g. 'Germany', 'United States', 'India'). |
| min_rating | integer | Minimum star rating filter (1-5). |
| online_only | boolean | Filter for currently online freelancers only. |
{
"type": "object",
"fields": {
"count": "integer total number of matching freelancers",
"users": "array of freelancer summary objects with username, country, city, hourlyrate, stars, skills, portfolios, and more"
},
"sample": {
"data": {
"count": 9214,
"users": [
{
"city": "Ilmenau",
"stars": 4.99,
"country": "Germany",
"tagline": "We Build Websites & Stores that grow your business",
"user_id": "6894616",
"username": "w4web",
"is_online": true,
"hourlyrate": 40,
"no_reviews": 434,
"portfolios": [
{
"title": "NP digital website",
"description": "Wordpress website development"
}
],
"top_skills": [
{
"id": "17",
"name": "Webdesign"
}
],
"public_name": "w4web",
"total_earnings": 464025
}
]
},
"status": "success"
}
}About the freelancer API
Search and Discovery
The search_freelancers endpoint accepts filters for country, skills (as comma-separated skill IDs), min_rating (1–5 stars), and online_only (boolean). It returns a count of total matching results alongside a users array. Each user object in that array includes username, country, city, hourlyrate, stars, skills, portfolios, and ratings. Pagination is controlled with the offset parameter. Skill IDs needed for the skills filter can be sourced from the get_skills or search_skills endpoints.
Profile Detail
Once you have a username from search results, get_freelancer_profile returns the full profile object keyed by user ID. This includes reputation, jobs, profile_description, location, status, and qualifications, as well as membership details and verification flags. This level of detail is useful for building candidate comparison tools or vetting workflows.
Skills Reference
The get_skills endpoint returns the complete catalog of skills available on the platform. Each skill object contains id, name, category, seo_url, and a local flag indicating region-specific relevance. The search_skills endpoint accepts a query string and returns the same object shape filtered by case-insensitive name match — useful for resolving a human-readable skill name to the numeric ID required by search_freelancers.
The freelancer API is a managed, monitored endpoint for freelancer.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when freelancer.de 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 freelancer.de 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 talent sourcing tool that filters German-market freelancers by skill ID and minimum star rating.
- Aggregate hourly rate data by skill category to benchmark freelancer pricing on freelancer.de.
- Monitor which freelancers in a given country are currently online to prioritize outreach.
- Automate profile enrichment pipelines by fetching full reputation and qualification data for shortlisted usernames.
- Resolve skill names to IDs programmatically using search_skills before constructing a search_freelancers query.
- Compare portfolio counts and ratings across freelancers in a specific city or country.
| 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 freelancer.de have an official developer API?+
What does the `search_freelancers` endpoint return for each freelancer?+
users array includes username, country, city, hourlyrate, stars, skills (with IDs), portfolios, and ratings. The count field tells you the total number of matching freelancers so you can paginate through results using the offset parameter.Does `get_freelancer_profile` return contact information like email or phone number?+
Does the API cover freelancers outside Germany?+
country filter in search_freelancers accepts any country name, so profiles from other countries registered on freelancer.de are reachable. Coverage reflects what is listed on freelancer.de itself, which skews toward the German-speaking market. If you need broader coverage from a different platform, you can fork the API on Parse and revise it to target a different source.Can I retrieve a freelancer's project history or individual reviews?+
get_freelancer_profile endpoint returns aggregated reputation and jobs data, not individual project records or per-review text. Granular review content is not currently exposed. You can fork the API on Parse and revise it to add an endpoint targeting individual review data.