# Truelancer.com API scraper — live freelance projects and freelancer profiles from Truelancer.com in clean PII-safe JSON: title, budget, skills, category, proposals, client country, and freelancer ratings/earnings. No login required.

> Search live freelance PROJECTS on Truelancer.com by keyword. Returns title, description, budget{type,min,max,currency}, skills[], category, proposal count, posted_at, coarse client signals (country, verified, total spent), and the project url. No client PII (the poster's name is dropped).
> ReefAPI engine `truelancer` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/truelancer/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /truelancer/v1/search — 1 credit
Search live freelance PROJECTS on Truelancer.com by keyword. Returns title, description, budget{type,min,max,currency}, skills[], category, proposal count, posted_at, coarse client signals (country, verified, total spent), and the project url. No client PII (the poster's name is dropped).

**Parameters:**
- `query` (string, optional) — Keyword to search Truelancer projects (title/skills) — e.g. 'logo design', 'wordpress', 'data entry'. Omit to browse the newest projects.
- `limit` (integer, optional, default 30) — How many projects to return (1–75). Use `offset` to page.
- `offset` (integer, optional, default 0) — Pagination offset (0–5000); skip this many results before returning `limit`.

**Returns:** projects[]{id, title, description, type, budget{type,min,max,currency}, skills[], category, bids_count, posted_at, client_country, client{...}, url}, total_count, returned, offset

**Example request body:**
```json
{
  "query": "design",
  "limit": 8
}
```

### POST /truelancer/v1/project — 1 credit
Full detail for one Truelancer.com project by URL or slug — everything from `search` plus views, end-date, tags, payment-verified flag, and proposal breakdown (received/active/shortlisted). No client PII.

**Parameters:**
- `id` (string, required) — The project to fetch: a Truelancer project URL or SEO slug ('freelance-project/<slug>-<id>'). A bare numeric id is not resolvable unauthenticated (the slug is required).

**Returns:** project{...all search fields..., detail{total_views, end_date, tags[], payment_verified, proposals{received,active,shortlisted}}}

### POST /truelancer/v1/user — 1 credit
PUBLIC business profile of a Truelancer.com freelancer by handle or profile URL: display name, headline, country, hourly rate, skills, ratings (avg rating, reviews, five-star %, projects delivered, total earnings), membership and availability. PII (email/phone/legal-name/address) is NEVER returned.

**Parameters:**
- `username` (string, required) — The freelancer to fetch: a Truelancer profile handle or profile URL. Returns the PUBLIC business profile only — no email / phone / legal-name / address (those are never returned).

**Returns:** user{id, username, display_name, tagline, country, hourly_rate, primary_currency, registration_year, membership, skills[], reputation{overall_rating,reviews,five_star_percent,projects_delivered,total_earnings}, availability, profile_url}

## More
- Try it live, no code: https://reefapi.com/playground?engine=truelancer
- Human docs page: https://reefapi.com/docs/truelancer
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
