Upwork API endpoint
Returns an Upwork freelancer profile: name, title, verification badge, overview, hourly rate, rating and review count, Job Success Score, location and local time, total jobs/hours worked, and recent client feedback (title, comment, date, client name, rating).
/upwork/freelancer/{id}Path parameters:
id (required) — Upwork's own opaque freelancer identifier, the value
after ~ in a freelancer profile URL (e.g. as linked from
GET /upwork/search's talent results, or from a job
posting's applicants).Notable response behavior:
verified reflects Upwork's own identity-verification badge on the
profile, not payment or account status.job_success_score is Upwork's own Job Success Score percentage
(0-100); omitted (0) when the profile doesn't display one (e.g. a new
freelancer with no completed jobs yet).feedback returns the client reviews visible on the profile's default
view — not necessarily the freelancer's full review history.| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| url | Has a value | upwork.com |
| name | Has a value | |
| title | Has a value | |
| verified | Has a value | false |
| rating | Has a value | 4.9 |
| review_count | Has a value | 67 |
| job_success_score | Has a value | 100 |
| location | Has a value | |
| local_time | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Upwork freelancer id, the value after \ | 0157e03059a690281f | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/upwork/freelancer/0157e03059a690281f" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "0157e03059a690281f",
"url": "https://www.upwork.com/freelancers/~0157e03059a690281f",
"name": "Eugene K.",
"title": "Python Developer",
"verified": true,
"overview": "I have 8 years of experience in Python development...",
"hourly_rate": "$37.00/hr",
"rating": 4.9,
"review_count": 67,
"job_success_score": 100,
"location": "San Diego, CA, USA",
"local_time": "12:06 am local time",
"total_jobs": 82,
"total_hours": 394,
"feedback": [
{
"title": "Scraping for Tattoo Shops",
"comment": "I will hire Eugene again if we need him.",
"date": "October 17, 2025",
"rating": 5
}
]
}
}Request schema
No body schema
Response schema
#/definitions/upwork.freelancerResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | upwork.FreelancerResponse | No | ||||
| data.feedback | array | No | ||||
| data.feedback[].client_name | string | No | ||||
| data.feedback[].comment | string | No | ||||
| data.feedback[].date | string | No | ||||
| data.feedback[].rating | number | No | ||||
| data.feedback[].title | string | No | ||||
| data.hourly_rate | string | No | ||||
| data.id | string | No | ||||
| data.job_success_score | integer | No | ||||
| data.local_time | string | No | ||||
| data.location | string | No | ||||
| data.name | string | No | ||||
| data.overview | string | No | ||||
| data.rating | number | No | ||||
| data.review_count | integer | No | ||||
| data.title | string | No | ||||
| data.total_hours | integer | No | ||||
| data.total_jobs | integer | No | ||||
| data.url | string | No | ||||
| data.verified | boolean | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/upwork/freelancer/0157e03059a690281f" \
-H "x-api-key: $CRAWLORA_API_KEY"