Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

PredictLeads / Find job openings by profession and location

PredictLeads tool predictleads-discover-job-openings on looot: input fields, $0.01 per result, output shape, and code to run it with curl, JavaScript or Python.

Returns a list of Job Openings filtered by a given profession (e.g. “Sales Engineers” or “Marketing Managers”) using O*NET occupation codes and/or location of the company.</br><strong>Note:</strong> This endpoint returns only job openings found within the last year. <strong>Note:</strong> This endpoint returns an estimated count of all results.

  • Tool id: predictleads-discover-job-openings
  • Provider: PredictLeads
  • Job: Search job listings (jobs.search)
  • Price: $0.01 per result. A call that fails at the provider costs $0.

Inputs

Name Type Required Description
active_only boolean no Set to true if you’d like to receive JobOpenings that are not closed, have last_seen_at more recent than 5 days and were found in the last year.
found_at_from string no Only return JobOpenings found after given date (ISO 8601). Example: “2024-09-25”
limit integer no Limit the number of shown items per page.
location string no The response will include only results in the given country name or state name/abbreviation. Example: “United States”
onet_codes array no One or more valid O*NET codes as a comma-separated string (e.g. param=val1,val2) or as array parameters (e.g. param[]=val1&param[]=val2). For full list of possible codes see: https://www.onetonline.org/find/all
page integer no Page number of shown items. NOTE: If the parameter is not provided, the meta property count will be omitted from response for performance reasons.
seniority string no The response will include only job openings with given seniority.
title string no The response will include only job openings whose titles contain all of the given words. Example: “product manager”

Output

Shape of the run’s result, checked against 1 real answer:

{ data: { id, type, attributes: { url, title, onet_data: { ... }, seniority, categories: string[], salary_data: { ... }, last_seen_at, first_seen_at, recruiter_data: { ... }, normalized_title, last_processed_at }, relationships: { company: { ... } } }[], meta: { record_state, schema_version }, included: { id, type, attributes: { domain, company_name } }[] }

Run it

Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.

Example input with placeholder values:

curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"predictleads-discover-job-openings","input":{"title":"product manager","location":"United States","found_at_from":"2024-09-25"},"wait":30}'
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "predictleads-discover-job-openings",
    input: {
      title: "product manager",
      location: "United States",
      found_at_from: "2024-09-25",
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "predictleads-discover-job-openings",
        "input": {
            "title": "product manager",
            "location": "United States",
            "found_at_from": "2024-09-25",
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))

To let looot pick among every provider of this job instead, send job:jobs.search as endpointId; see the job page.

Was this page helpful?