The Upwork API produces 55 fields per record. Below is the complete field list, what each group contains, and which values may come back empty. The sales pitch waits until the end.
These are the fields returned by our own Upwork Actor, along with its cost and limits.
Every field
Each row contains 55 fields, organized into these groups:
- client — clientCountry, clientCountryCode, clientTotalSpent, clientSpentCurrency, clientPaymentVerified, clientRating, clientReviewCount, clientHasFinancialPrivacy
- salary — salaryMin, salaryMax, salaryCurrency, salaryType
- description — description, descriptionHtml, descriptionMarkdown
- engagement — engagementType, engagementDuration, engagementDurationWeeks
- extracted — extractedEmails, extractedPhones, extractedUrls
- contact — contactName, contactEmail, contactPhone
- job — jobId, jobType
- budget — budgetAmount, budgetCurrency
- hourly — hourlyBudgetMin, hourlyBudgetMax
- skills — skills, skillsDetailed
- repost — repostOfId, repostDetectedAt
Here are the leading fields from an actual run:
{
"jobId": "2091766535816529594",
"title": "B2B: Company Enrichment",
"description": "Required data\n\nFor each company, provide:\n\n1. **Company Website**\n2. **LinkedIn Company...",
"descriptionHtml": null,
"descriptionMarkdown": "Required data\n\nFor each company, provide:\n\n1. **Company Website**\n2. **LinkedIn Company...",
"contentHash": "7aee12807e5bf8bb0f107e537b987cc0aa9b655f611cf4117d02d1802cd6f3af",
"jobType": "FIXED",
"experienceLevel": "ExpertLevel",
"budgetAmount": 100,
"budgetCurrency": "USD",
"hourlyBudgetMin": null,
"hourlyBudgetMax": null,
"weeklyRetainerBudget": null,
"salaryMin": 100
}
Filters that narrow a run
The input accepts 55 options, including query, searchUrl, jobType, experienceLevel, workload, sort, category, location, excludeLocations, budget, hourlyRate, duration, verifiedPaymentOnly, proposals, contractToHire, clientHires, includeKeywords, excludeKeywords, fromDate, toDate, and more.
These filters run server-side. You pay only for the records requested, instead of producing a larger set and filtering it afterwards.
What it costs
Pricing is per event, with no subscription:
- $0.001 per actor start
- $0.001 per result
One measured run—not an estimate—produced:
- 25 records in 5.1 seconds
- cost: $0.00028 — about $0.01 per 1,000 records
What people use it for
- Benchmarking. Pricing and salary fields support comparisons across the entire set instead of a page of results.
- Reputation monitoring. Tracking ratings and review text over time reveals movement that one page view cannot.
- Geographic analysis. Location fields allow market-by-market comparisons without another data source.
Limits
- An empty field means the source showed nothing. Values are never inferred or filled from another source.
- The schema follows Upwork's markup, so a redesign can add, rename or drop fields.
- Anything Upwork places behind a login is absent from every field below, by design.
Questions people ask
Are all fields always populated?
No. They are not guessed, either. When the source leaves a field blank, the result stays blank. An empty value means Upwork did not show one, not that extraction failed.
Which markets does it cover?
location narrows the run before records are produced. You pay for the requested market instead of filtering the results afterwards.
Which filters are applied at the source?
jobType, category, fromDate, toDate run server-side. That affects cost as well as convenience: filtered-out records are never produced and therefore never billed.
How fresh is the data?
Every run reads Upwork when it runs, with no cached copy in between. Two runs a week apart provide two snapshots, making change detection possible.
Can I fetch only what changed?
Yes. incrementalMode exists for that purpose. Without it, another run returns the full set, and you dedupe it on your side.
Is there an official Upwork export?
No. There is no public bulk export or API, so the field list above comes from parsing pages, not a documented schema.
Try it
If these are the fields you need, the Upwork API, maintained against the live site produces them. New accounts receive $5 of free platform credit each month—enough to cover a real run of this size several times over.
Disclosure: we build and maintain this Actor, and the link above is an affiliate link.
Further reading
- Naukri API — another scraper we build and document
- our write-up on the Seek API — another scraper we build and document
- the Wellfound API field reference — another scraper we build and document
We also publish the full Upwork API reference on blackfalcondata.com — the request, the response, and what a run costs.
Top comments (0)