Parse an Upwork address
Parse any Upwork address into structured input for the other routes, without fetching anything. Tells you whether an address is a results page or a posting, and pulls the search terms off a results page so you can hand them straight to /search-jobs. The right first step for a list of pasted addresses — it sorts them before a single page fetch is spent. **Free.** It makes no upstream request at all, answers in about a tenth of a second, and reports `pagesFetched: 0`.
/resolve-url Utilities https://api.fetchlayer.dev/upwork/resolve-url Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
url string required Any Upwork address — a job posting or a job-search results page.
format string optional Envelope format: json or markdown. (default: json)
Response Fields
resolve-url
Parse an Upwork address
transport string The source. "upwork-jobs".
notes string[] Caveats you can act on. The one that matters here says per-posting detail was not available and the postings carry listing-level fields only.
pagesFetched number Pages read, and what the request is billed at: 1 credit per page. A search of one results page is 1 whether it returns 3 postings or 50.
kind string "search" for a results page, or the posting kind for a single job.
jobId string The posting's id when the address names one; null on a results page.
searchUrl string The results page address, ready to pass to /search-jobs as `searchUrl`.
query string The search terms read off a results page, ready to pass to /search-jobs as `query`.
Request
curl -X POST "https://api.fetchlayer.dev/upwork/resolve-url" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.upwork.com/nx/search/jobs/?q=python"}'Response
{
"kind": "search",
"jobId": null,
"searchUrl": "https://www.upwork.com/nx/search/jobs/?q=python",
"query": "python",
"notes": [
"Use the job search capability with this searchUrl."
],
"transport": "upwork-jobs",
"pagesFetched": 0
}