cURL
Test the API straight from your terminal with cURL. Set your API key first — see Authentication.
export JOBVEN_API_KEY="your_api_key"
Fetch Jobs
Basic request to list job postings:
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?limit=10"
Pipe the response through jq to read it:
curl -s -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?limit=10" | jq '.meta.count'
Filter Jobs
Search for remote React developer positions with a salary floor. Array filters use bracket notation, which must be URL-encoded (skills%5B%5D):
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?q=react%20developer&skills%5B%5D=react&skills%5B%5D=typescript&remoteType%5B%5D=remote&minSalary=100000&limit=20"
For every available filter, see the Filter Jobs guide.
Paginate Results
Cursor pagination uses the nextCursor value from each response:
# First request - grab the next cursor
curl -s -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?limit=100" | jq -r '.meta.nextCursor'
# Subsequent requests (replace CURSOR_VALUE)
curl -s -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?limit=100&cursor=CURSOR_VALUE"
Get a Single Job
Fetch a specific job by ID:
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs/abc123-def456-ghi789"
Incremental Sync
Fetch only jobs posted in the last 24 hours. postedAfter takes a Unix timestamp in seconds:
YESTERDAY=$(( $(date +%s) - 86400 ))
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?postedAfter=$YESTERDAY&limit=100"
Error Handling
Inspect the status code and react accordingly. A 429 with "error": "Quota Exceeded" means your monthly quota is gone — retrying won't help until it resets:
response=$(curl -s -w "\n%{http_code}" \
-H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?limit=10")
status=$(echo "$response" | tail -1)
body=$(echo "$response" | sed '$d')
case "$status" in
200) echo "$body" | jq '.meta.count' ;;
401) echo "Invalid API key" ;;
429)
if echo "$body" | jq -e '.error == "Quota Exceeded"' > /dev/null; then
echo "Monthly quota exhausted"
else
retry=$(echo "$body" | jq -r '.retryAfter // 1')
echo "Rate limited. Waiting ${retry}s..."
sleep "$retry"
fi
;;
*) echo "API error: $status" ;;
esac
See Handle Rate Limits for the full retry strategy.