Skip to main content

1. Overview

The Get Company Jobs API returns the currently listed job postings for a given company. Results are returned synchronously in the HTTP response — no job polling required. This is a synchronous GET API — you pass a company identifier and optional pagination parameters as URL parameters, and receive a paginated array of job postings immediately. Each job in the response includes:
  • Core posting detailstitle, location, url, and a description when available
  • Work arrangementtype (e.g. full-time, contract) and a remote_allow flag
  • Compensation metadatasalary_display, min_salary, max_salary, currency_code, pay_period, and compensation_type when disclosed
  • Classificationjob_functions, industries, experience_level, skills, and benefits when available
  • Timinglisted_at_date, original_listed_date, and expire_at
  • job_id — the identifier used to fetch the complete job posting via the Get Job Details API
Common use cases:
  • Hiring signal monitoring — Track open headcount across a portfolio or competitor set to infer growth, geographic expansion, or strategic priorities
  • Talent market mapping — Pull all roles for a company to analyse function mix, seniority distribution, and locations
  • Recruiting intelligence — Surface remote-eligible or specific-function roles across a coverage universe
This API is synchronous. Results are returned directly in the HTTP response — no job submission or polling required. See How Sync APIs work.
This endpoint returns the job listing with summary fields. To retrieve the full posting — complete description, structured requirements, and all metadata — pass the job_id from this response to the Get Job Details API.

2. Quick Start

Step 1 — Make a simple request
curl --location 'https://api.wokelo.ai/api/enterprise/company/jobs/?company=tesla' \
  --header 'Authorization: Bearer <YOUR_API_TOKEN>' \
  --header 'Content-Type: application/json'
Step 2 — Control pagination
response = requests.get(
    "https://api.wokelo.ai/api/enterprise/company/jobs/",
    headers={"Authorization": "Bearer <YOUR_API_TOKEN>"},
    params={
        "company": "tesla",
        "page": 1,
        "page_size": 100
    }
)
jobs = response.json()["data"]
Step 3 — Work with the jobs
for job in jobs:
    remote = "Remote OK" if job["remote_allow"] else "On-site"
    print(f"{job['title']}{job['location']} [{remote}]")
    print(f"  job_id: {job['job_id']} | {job['url']}")
    print()

3. Authentication

All requests must include a Bearer token in the Authorization HTTP header. No other authentication method is supported.
Authorization: Bearer <YOUR_API_TOKEN>
API tokens are issued from your Wokelo account. Navigate to Account Details → API Credentials in the Wokelo dashboard to get your client id and client secret. Contact support@wokelo.ai if you do not yet have API access.
Never expose your token in client-side code, browser requests, or public repositories. A missing or invalid token returns 401 Unauthorized. A valid token without sufficient plan permissions returns 403 Forbidden.

4. Request Reference

Endpoint
GET https://api.wokelo.ai/api/enterprise/company/jobs/
All parameters are passed as URL query parameters.
ParameterTypeRequiredDescription
companystringRequiredCompany permalink (e.g. "tesla") or a full company URL (e.g. "https://www.tesla.com/"). Use the Company Search API to resolve a name to its permalink.
pageintegerOptionalThe page number to retrieve. Used together with page_size to paginate through results. Defaults to 1.
page_sizeintegerOptionalNumber of job results per page. Default 50, maximum 500.
Full request example:
curl --location 'https://api.wokelo.ai/api/enterprise/company/jobs/?company=tesla&page=1&page_size=100' \
  --header 'Authorization: Bearer <YOUR_API_TOKEN>' \
  --header 'Content-Type: application/json'

5. Response

Response structure

{
  "status": "success",
  "data": [ ...job objects... ]
}
FieldTypeDescription
statusstring"success" when the request was processed successfully.
dataarrayArray of job posting objects for the requested page.

Job object fields

Each object in the data array contains the following fields: Core posting details
FieldTypeDescription
job_idstringUnique identifier for the posting. Pass this to the Get Job Details API to retrieve the full posting.
titlestringJob title as listed.
urlstringCanonical URL of the original job posting.
locationstringLocation of the role (city, region, country). May be empty for fully remote roles.
descriptionstringShort description of the role when available. Often empty in the listing — use Get Job Details for full text.
typestringEmployment type (e.g. full-time, part-time, contract). Empty string when not specified.
remote_allowbooleantrue when the role permits remote work.
Compensation metadata
FieldTypeDescription
salary_displaystringHuman-readable salary string as shown on the posting. Empty when not disclosed.
salary_detailsobjectStructured salary breakdown when available. Empty object when not disclosed.
min_salarynumberLower bound of the salary range. null when not disclosed.
max_salarynumberUpper bound of the salary range. null when not disclosed.
compensation_typestringCompensation basis (e.g. base salary, hourly). Empty string when not specified.
pay_periodstringPay period the salary refers to (e.g. yearly, hourly). Empty string when not specified.
currency_codestringISO 4217 currency code of the salary figures (e.g. "USD"). Empty string when not disclosed.
Classification & timing
FieldTypeDescription
job_functionsstring[]Functional categories for the role. Empty array when not classified.
industriesstring[]Industries associated with the role. Empty array when not classified.
experience_levelstringSeniority/experience level (e.g. entry, mid, senior). Empty string when not specified.
skillsstring[]Skills associated with the role. Empty array when not detected.
benefitsstring[]Listed benefits. Empty array when none specified.
listed_at_datestringDate the posting was listed. null when not available.
original_listed_datestringDate the posting was originally listed. null when not available.
expire_atstringExpiry date of the posting. null when no expiry is set.

Sample response

{
    "status": "success",
    "data": [
        {
            "job_id": "4426093115",
            "title": "大阪【自動運転テストドライバー】",
            "url": "https://www.linkedin.com/jobs/view/4426093115",
            "location": "Osaka, Osaka, Japan",
            "description": "",
            "type": "",
            "remote_allow": true,
            "salary_display": "",
            "salary_details": {},
            "min_salary": null,
            "max_salary": null,
            "compensation_type": "",
            "pay_period": "",
            "currency_code": "",
            "job_functions": [],
            "industries": [],
            "experience_level": "",
            "expire_at": null,
            "listed_at_date": null,
            "original_listed_date": null,
            "skills": [],
            "benefits": []
        },
        {
            "job_id": "4426101005",
            "title": "Service Advisor, Oakleigh",
            "url": "https://www.linkedin.com/jobs/view/4426101005",
            "location": "Oakleigh South, Victoria, Australia",
            "description": "",
            "type": "",
            "remote_allow": true,
            "salary_display": "",
            "salary_details": {},
            "min_salary": null,
            "max_salary": null,
            "compensation_type": "",
            "pay_period": "",
            "currency_code": "",
            "job_functions": [],
            "industries": [],
            "experience_level": "",
            "expire_at": null,
            "listed_at_date": null,
            "original_listed_date": null,
            "skills": [],
            "benefits": []
        }
    ]
}

Notes on empty fields

Many fields can be empty strings, empty arrays, empty objects, or null in valid responses. Compensation fields (min_salary, max_salary, salary_display), classification fields (job_functions, industries, skills, experience_level), and timing fields (listed_at_date, expire_at) are frequently unpopulated in the listing view — the source posting may not disclose them, or they are only resolved when you fetch the full posting via the Get Job Details API. Always guard against empty/null values before using these fields.

6. Examples

Hiring signal monitoring — paginate through all open roles

Retrieve every open posting for a company by paginating until a page returns fewer results than page_size, then summarise by location and remote-eligibility.
import requests
from collections import Counter

HEADERS = {"Authorization": "Bearer <YOUR_API_TOKEN>"}
PAGE_SIZE = 200

all_jobs = []
page = 1

while True:
    response = requests.get(
        "https://api.wokelo.ai/api/enterprise/company/jobs/",
        headers=HEADERS,
        params={
            "company": "tesla",
            "page": page,
            "page_size": PAGE_SIZE
        }
    )
    batch = response.json().get("data", [])
    all_jobs.extend(batch)
    print(f"Page {page}: fetched {len(batch)} jobs (running total: {len(all_jobs)})")

    # Last page reached when a partial (or empty) page is returned
    if len(batch) < PAGE_SIZE:
        break
    page += 1

# Summarise hiring footprint
remote = sum(1 for j in all_jobs if j["remote_allow"])
print(f"\nTotal open roles: {len(all_jobs)} | Remote-eligible: {remote}")

top_locations = Counter(j["location"] for j in all_jobs if j["location"]).most_common(10)
print("\nTop hiring locations:")
for loc, n in top_locations:
    print(f"  {n:>3}  {loc}")

Chaining to the Get Job Details API

The listing view returns summary fields only. To get the full posting, pass each job_id to the Get Job Details API.
import requests

HEADERS = {"Authorization": "Bearer <YOUR_API_TOKEN>"}

# 1. Get the listing
jobs = requests.get(
    "https://api.wokelo.ai/api/enterprise/company/jobs/",
    headers=HEADERS,
    params={"company": "tesla", "page": 1, "page_size": 50}
).json()["data"]

# 2. Fetch full details for the first few job_ids
for job in jobs[:5]:
    details = requests.get(
        "https://api.wokelo.ai/api/enterprise/company/job-details/",
        headers=HEADERS,
        params={"job_id": job["job_id"]}
    ).json()

    print(f"{job['title']} ({job['job_id']})")
    print(f"  {details.get('data', {})}")
    print()
Refer to the Get Job Details API documentation for its exact endpoint path, parameters, and response schema.

7. Error Handling

The API uses standard HTTP status codes. All error responses include a JSON body with a detail or message field.
StatusMeaningCause & Resolution
200 OKSuccessJobs returned successfully.
400 Bad RequestInvalid parametersA required parameter is missing or a value is invalid — e.g. missing company, or page_size above the maximum. Check detail.
401 UnauthorizedAuth failedThe Authorization header is missing, malformed, or contains an invalid token. Verify your key in Settings → API Keys.
403 ForbiddenInsufficient accessYour plan does not include access to this endpoint or company. Contact support@wokelo.ai.
404 Not FoundCompany not foundThe company permalink could not be resolved. Use the Company Search API to verify it.
429 Too Many RequestsRate limit exceededImplement exponential back-off. The response includes a Retry-After header.
500 Internal Server ErrorServer errorRetry after a brief delay. If the issue persists, contact support@wokelo.ai.
Error response example:
{
  "status": "error",
  "detail": "Company permalink 'unknown-co' could not be resolved."
}

8. Best Practices

Use the company permalink, not a display name. The company parameter expects a permalink (e.g. "tesla") or a full URL. Passing "Tesla Inc." will not resolve. Use the Company Search API to look up the permalink first. Tune page_size to your workload. Default is 50 and the maximum is 500. Use larger pages to minimise round-trips when pulling a company’s full hiring footprint; stop paginating when a page returns fewer results than page_size. Guard against empty and null fields. Most compensation, classification, and timing fields are unpopulated in the listing view. Always use .get() with defaults and check for null before using min_salary, listed_at_date, etc. Use Get Job Details for full content. This endpoint is optimised for listing and discovery. When you need the complete description, structured requirements, or resolved metadata, pass the job_id to the Get Job Details API rather than relying on the (often empty) description field here.

Get Job Details

Retrieve the complete posting for a single role by passing the job_id from this API.

Company News Monitoring

Fetch the latest AI-enriched news articles for any company.

Company Instant Enrichment

Synchronously enrich firmographic and financial data for any company by permalink or URL.