Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"ciphertext": "<string>",
"title": "<string>",
"description": "<string>",
"posted_at": {},
"job_created_at": {},
"job_type": "<string>",
"budget": "<string>",
"budget_amount": 123,
"hourly_rate_min": 123,
"hourly_rate_max": 123,
"duration": "<string>",
"duration_weeks": 123,
"workload": "<string>",
"experience_level": "<string>",
"skills": "<string>",
"is_enterprise": true,
"freelancers_to_hire": 123,
"currency": "<string>",
"proposals_count": 123,
"category": "<string>",
"category_group": "<string>",
"job_status": "<string>",
"total_hired": 123,
"total_interviewed": 123,
"invitations_sent": 123,
"last_client_activity": {},
"client_country": "<string>",
"client_city": "<string>",
"client_timezone": "<string>",
"client_spend": 123,
"client_rating": 123,
"client_reviews_count": 123,
"client_total_jobs": 123,
"client_active_jobs": 123,
"client_total_hires": 123,
"client_hours": 123,
"client_avg_hourly_rate": 123,
"client_payment_verified": true,
"client_member_since": {},
"client_open_jobs": 123,
"allowed_applicant_countries": "<string>",
"min_job_success_score": 123,
"preferred_english_level": "<string>",
"rising_talent_only": true,
"portfolio_required": true,
"local_market_only": true,
"similar_job_urls": "<string>"
}Upwork Jobs Scraper
Get Results
Retrieve scraped data from Upwork Jobs Scraper
GET
/
v1
/
results
Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"ciphertext": "<string>",
"title": "<string>",
"description": "<string>",
"posted_at": {},
"job_created_at": {},
"job_type": "<string>",
"budget": "<string>",
"budget_amount": 123,
"hourly_rate_min": 123,
"hourly_rate_max": 123,
"duration": "<string>",
"duration_weeks": 123,
"workload": "<string>",
"experience_level": "<string>",
"skills": "<string>",
"is_enterprise": true,
"freelancers_to_hire": 123,
"currency": "<string>",
"proposals_count": 123,
"category": "<string>",
"category_group": "<string>",
"job_status": "<string>",
"total_hired": 123,
"total_interviewed": 123,
"invitations_sent": 123,
"last_client_activity": {},
"client_country": "<string>",
"client_city": "<string>",
"client_timezone": "<string>",
"client_spend": 123,
"client_rating": 123,
"client_reviews_count": 123,
"client_total_jobs": 123,
"client_active_jobs": 123,
"client_total_hires": 123,
"client_hours": 123,
"client_avg_hourly_rate": 123,
"client_payment_verified": true,
"client_member_since": {},
"client_open_jobs": 123,
"allowed_applicant_countries": "<string>",
"min_job_success_score": 123,
"preferred_english_level": "<string>",
"rising_talent_only": true,
"portfolio_required": true,
"local_market_only": true,
"similar_job_urls": "<string>"
}Retrieve scraped data from your Upwork Jobs Scraper runs.
Headers
string
required
Your API authentication token. Value:
Token YOUR_API_KEYQuery Parameters
string
required
Hash of the squid to get results from
integer
Page number (default: 1)
Result Fields
string
Unique Upwork job posting identifier. Example:
~01abc123def456string
Direct URL to the job posting. Example:
https://www.upwork.com/jobs/~01abc123def456string
Upwork’s public job reference (the ~02… token)
string
Job title. Example:
Python Developer for Data Pipelinetext
Full job description
datetime
Date and time published, in UTC. Example:
2026-09-14T10:30:00Zdatetime
Date and time created, in UTC
string
Hourly or Fixed-Price. Example:
Fixed-Pricestring
Human-readable budget. Example:
$500float
Fixed-price budget as a number. Example:
500.0float
Lower bound of hourly rate range
float
Upper bound of hourly rate range
string
Expected project duration. Example:
1 to 3 monthsinteger
Expected project duration in weeks
string
Expected weekly workload on hourly jobs
string
Experience level the client asks for. Example:
Intermediatestring
Skills attached to the posting, comma-separated. Example:
Python, Pandas, Apache AirflowDetail Fields
The following fields requirejob_details: true in settings.
boolean
True when from an Upwork Enterprise client
integer
Number of freelancers the client wants
string
Currency of the budget/hourly rate
integer
Number of proposals received
string
Upwork category of the job
string
Top-level Upwork category group
string
Hiring status of the posting
integer
Freelancers already hired
integer
Freelancers invited to interview
integer
Invitations the client sent
datetime
Last time the client acted on this posting
string
Country of the client
string
City of the client
string
Timezone of the client
float
Total amount the client has spent on Upwork
float
Average feedback score of the client, out of 5
integer
Number of reviews the client has received
integer
Number of jobs the client has posted
integer
Number of contracts currently running
integer
Number of jobs that ended in a hire
float
Total hours the client has paid for
float
Average hourly rate the client has paid
boolean
True when payment method is verified
datetime
Date the client joined Upwork
integer
Number of open job postings
string
Countries restricted to, comma-separated
integer
Minimum Job Success Score required
string
English level the client asks for
boolean
True when only Rising Talent accepted
boolean
True when portfolio is required
boolean
True when restricted to client’s local market
string
URLs of similar jobs, comma-separated
Response
200
{"total_results": 1, "data": [{"job_id": "~01abc123def456", "title": "Python Developer for Data Pipeline", "job_type": "Fixed-Price", "budget_amount": 500.0, "experience_level": "Intermediate", "skills": "Python, Pandas, Apache Airflow", "posted_at": "2026-09-14T10:30:00Z"}]}