JOA Job Opportunities API

API ID 14072

Employer-direct job postings API: 2.2M live vacancies, 150+ countries, closure history and field-level provenance.

439 ms avg response

API Documentation

Endpoints

Request
Search live, employer-direct job postings across 150+ countries. Filter by country, city, remote status, category, seniority, salary and full-text query. Each job carries per-field provenance (published, inferred or absent) and the employer's own apply link. Cursor pagination returns up to 20 rows per request.
Endpoint ID: 34520
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34520/search+live+job+postings
INPUT PARAMETERS

Search live job postings — Endpoint Features

Object Description
employment_type Optional Employment type filter
q Optional Full-text search query
title Optional Job title filter
company Optional Employer slug, e.g. accenture
posted_after Optional Only jobs posted after this date (RFC3339)
has_salary Optional Set to true to return only jobs with salary
limit Optional Rows per page, 1-20 (default 20)
cursor Optional next_cursor value from the previous page
city Optional City name filter
remote Optional Remote status: remote, hybrid or on_site
category Optional Job category filter
seniority Optional Seniority level filter

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

employment_type
q
title
company
posted_after
has_salary
limit
cursor
city
remote
category
seniority
API EXAMPLE RESPONSE
JSON
{
    "data": [
        {
            "id": "d5729cee-083c-4795-90a2-21e801826418",
            "slug": "psychiatrist-d5729cee",
            "title": "Psychiatrist",
            "company": "neuro-wellness-spa",
            "company_slug": "neuro-wellness-spa",
            "company_logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/neuro-wellness.png",
            "category": "Healthcare",
            "category_confidence": 0.95,
            "country": "US",
            "city": "Sacramento",
            "location": "Sacramento, CA",
            "region": "CA",
            "remote_inferred": false,
            "employment_type": "Full-time",
            "seniority": "Senior",
            "posted_at": "2026-10-02T00:38:37Z",
            "first_seen_at": "2026-10-02T00:41:40Z",
            "last_verified_at": "2026-10-02T00:51:21Z",
            "status": "live",
            "closed_at": null,
            "closed_reason": null,
            "apply_url": "https://neuro-wellness-spa.breezy.hr/p/6972348b4580-psychiatrist",
            "source": "breezy",
            "source_type": "ats",
            "provider_type": "employer_ats",
            "has_description": false,
            "description_length": 0,
            "field_sources": {
                "remote": "absent",
                "employment_type": "published",
                "category": "inferred",
                "seniority": "inferred",
                "salary": "absent",
                "salary_max": "absent",
                "salary_currency": "absent",
                "salary_period": "absent",
                "location": "inferred",
                "region": "published",
                "posted_at": "published",
                "description": "absent",
                "description_length": "absent",
                "source_type": "inferred",
                "expires_at": "absent",
                "source_requisition_id": "absent",
                "employer_website": "absent"
            }
        },
        {
            "id": "6dad06bc-555d-4426-b1b0-4151540aa912",
            "slug": "psychiatrist-6dad06bc",
            "title": "Psychiatrist",
            "company": "neuro-wellness-spa",
            "company_slug": "neuro-wellness-spa",
            "company_logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/neuro-wellness.png",
            "category": "Healthcare",
            "category_confidence": 0.95,
            "country": "US",
            "city": "San Diego",
            "location": "San Diego, CA",
            "region": "CA",
            "remote_inferred": false,
            "employment_type": "Full-time",
            "seniority": "Senior",
            "posted_at": "2026-10-02T00:38:06Z",
            "first_seen_at": "2026-10-02T00:41:40Z",
            "last_verified_at": "2026-10-02T00:51:21Z",
            "status": "live",
            "closed_at": null,
            "closed_reason": null,
            "apply_url": "https://neuro-wellness-spa.breezy.hr/p/dd74a336188b-psychiatrist",
            "source": "breezy",
            "source_type": "ats",
            "provider_type": "employer_ats",
            "has_description": false,
            "description_length": 0,
            "field_sources": {
                "remote": "absent",
                "employment_type": "published",
                "category": "inferred",
                "seniority": "inferred",
                "salary": "absent",
                "salary_max": "absent",
                "salary_currency": "absent",
                "salary_period": "absent",
                "location": "inferred",
                "region": "published",
                "posted_at": "published",
                "description": "absent",
                "description_length": "absent",
                "source_type": "inferred",
                "expires_at": "absent",
                "source_requisition_id": "absent",
                "employer_website": "absent"
            }
        },
        {
            "id": "9395902d-60df-46b8-8646-8fced7516054",
            "slug": "psychiatrist-9395902d",
            "title": "Psychiatrist",
            "company": "neuro-wellness-spa",
            "company_slug": "neuro-wellness-spa",
            "company_logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/neuro-wellness.png",
            "category": "Healthcare",
            "category_confidence": 0.95,
            "country": "US",
            "city": "San Jose",
            "location": "San Jose, CA",
            "region": "CA",
            "remote_inferred": false,
            "employment_type": "Full-time",
            "seniority": "Senior",
            "posted_at": "2026-10-02T00:37:44Z",
            "first_seen_at": "2026-10-02T00:41:40Z",
            "last_verified_at": "2026-10-02T00:51:21Z",
            "status": "live",
            "closed_at": null,
            "closed_reason": null,
            "apply_url": "https://neuro-wellness-spa.breezy.hr/p/430138728621-psychiatrist",
            "source": "breezy",
            "source_type": "ats",
            "provider_type": "employer_ats",
            "has_description": false,
            "description_length": 0,
            "field_sources": {
                "remote": "absent",
                "employment_type": "published",
                "category": "inferred",
                "seniority": "inferred",
                "salary": "absent",
                "salary_max": "absent",
                "salary_currency": "absent",
                "salary_period": "absent",
                "location": "inferred",
                "region": "published",
                "posted_at": "published",
                "description": "absent",
                "description_length": "absent",
                "source_type": "inferred",
                "expires_at": "absent",
                "source_requisition_id": "absent",
                "employer_website": "absent"
            }
        }
    ],
    "next_cursor": "2026-10-02T00:37:44.128000Z|9395902d-60df-46b8-8646-8fced7516054",
    "has_more": true
}
Search live job postings — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34520/search+live+job+postings?limit=3' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Retrieve the full record of one live job posting by its id or slug, including per-field provenance (published, inferred or absent), last-verified timestamp and the employer-direct apply link. Use an id returned by the job search endpoint.
Endpoint ID: 34521
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34521/get+one+job+posting
INPUT PARAMETERS

Free test requests remaining: 3 of 3.

API EXAMPLE RESPONSE
JSON
{
    "data": {
        "id": "87407abe-e196-40e8-ae1f-bae09d1456c1",
        "slug": "european-business-development-director-87407abe",
        "title": "European Business Development Director",
        "company": "Caldera Medical",
        "company_slug": "caldera-medical",
        "company_logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/caldera-medical.png",
        "category_confidence": null,
        "country": "DE",
        "city": "Berlin",
        "location": "Berlin",
        "remote_inferred": false,
        "posted_at": "2026-10-02T00:00:00Z",
        "first_seen_at": "2026-10-02T00:15:53Z",
        "last_verified_at": "2026-10-02T00:51:21Z",
        "status": "live",
        "closed_at": null,
        "closed_reason": null,
        "apply_url": "https://careers.jobscore.com/careers/calderamedical/jobs/european-business-development-director-aKmoly9vzg9Btgl3-5XsNg?ref=rss&sid=68",
        "source": "company_site",
        "source_type": "career_site",
        "provider_type": "direct",
        "has_description": true,
        "description_length": 5399,
        "field_sources": {
            "remote": "absent",
            "employment_type": "absent",
            "category": "absent",
            "seniority": "absent",
            "salary": "absent",
            "salary_max": "absent",
            "salary_currency": "absent",
            "salary_period": "absent",
            "location": "inferred",
            "region": "absent",
            "posted_at": "published",
            "description": "published",
            "description_length": "published",
            "source_type": "inferred",
            "expires_at": "absent",
            "source_requisition_id": "absent",
            "employer_website": "absent"
        }
    },
    "description": "European Business Development Director Location: Europe (Field-Based) Reports To: Vice President, International Sales Caldera Medical’s Mission - To Improve the Quality of Life for Women! Message from the Hiring Manager: Caldera Medical is building a distributor-based commercial model across its European markets, and we are looking for a seasoned medical device sales leader to drive it. As European Business Development Director, you will lead the rollout of this model across your region: identifying, qualifying, and recommending the right distribution partners, integrating existing customers, contracts, and tenders with those partners, and executing regional strategies that protect and grow revenue. This is a high-impact, field-based leadership role for someone who combines deep OR surgical market knowledge with a strong European distributor network. You will play a central role in shaping our partner footprint from the start, with a particular focus on the region's highest-priority countries. Europe is one of Caldera's most important growth markets, and the partner network you build will define how surgeons and patients across the region access our pelvic health solutions for years to come. In this role, you will shape that network from the ground up, set the standard for how Caldera works with distributors, and directly drive the revenue that fuels our mission to improve the lives of women. Duties and Responsibilities: Lead the implementation of Caldera's distributor-based sales model across your assigned European region, ensuring a smooth transition for customers, contracts, and tenders. Prospect, qualify, and recommend the most suitable distribution partners in each country, and participate in final partner selection. Onboard and integrate new distributors, delivering the training and support they need to succeed with Caldera products. Develop and execute regional sales strategies aligned with corporate objectives, prioritizing the highest-revenue countries and opportunities. Build and maintain strong relationships with distributors, key accounts, key opinion leaders, and surgeon trainers across the region. Monitor distributor performance against targets and contractual commitments, providing coaching and support to close gaps. Conduct ongoing market analysis to identify trends, opportunities, and competitive threats. Prepare and present regular sales reports against established KPIs to International Sales leadership. Ensure all activities comply with company policies, industry regulations, and ethical standards, and champion Caldera's commitment to women's health and pelvic floor solutions. Required Knowledge, Skills and Abilities: University degree required; MBA preferred. 10+ years of medical device experience in the OR surgical space. 5+ years of experience managing both direct and indirect (distributor) sales teams. A documented track record of consistently exceeding sales quotas. Proven experience planning and executing regional strategies aligned with corporate objectives. Solid knowledge of market access and reimbursement for SUI and POP implants and related gynecologic devices across European markets. Demonstrated ability to lead, coach, and develop high-performing distributors and teams. A proactive, driven approach to sales, with the determination to exceed targets and expand market opportunities. Strong relationship-building skills with distributors and key stakeholders, including the cultural awareness to navigate differing sales practices across countries. Analytical mindset with the ability to interpret market data, identify trends, and make data-driven decisions. Adaptability to changing market conditions and company strategies. Willingness to travel 60–70% of the time, including frequent overnight stays. Our Culture- Where Career and Passion come together! A Culture of family and team… not a corporate goliath where you’re just another number. All employees get a seat at the table and have influence with management. We care about giving back to the community. Our team donates time to helping local charities. The Women’s Health Initiative is the heart of what we do, every day we put underprivileged women first. Our goal is to treat 1 million women suffering from incontinence by 2027! Who is Caldera Medical? Caldera Medical is dedicated to improving the quality of life for women through innovative surgical solutions for stress urinary incontinence, pelvic organ prolapse, polyps, and fibroids. Our products are trusted by surgeons worldwide, and our commitment extends beyond medical advancements. We foster strong partnerships with surgeons and lead the largest humanitarian program in women’s health, aiming to provide treatment to one million underserved women by 2027. Guided by integrity, we prioritize patients, customers, employees, and the community over profit. As the fastest-growing women’s health company, we remain committed to expanding education and access to life-changing care for women everywhere. Caldera Medical is an equal opportunity employer and considers all candidates for employment regardless of race, color, religion, sex, national origin, citizenship, age, disability, marital status, military or veteran's status (including protected veterans, as may be required by federal law), sexual orientation, gender identity or any other category protected by law."
}
Get one job posting — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34521/get+one+job+posting&ID=Required' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
List employers that currently have live job postings, with their slug, country and open-vacancy counts. Search by name with q, filter by country and page through results with cursor pagination, up to 20 rows per request.
Endpoint ID: 34522
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34522/list+employers
INPUT PARAMETERS

List employers — Endpoint Features

Object Description
q Optional Employer name search
country Optional ISO country code, e.g. DE
limit Optional Rows per page, 1-20 (default 20)
cursor Optional next_cursor value from the previous page

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

q
country
limit
cursor
API EXAMPLE RESPONSE
JSON
{
    "data": [
        {
            "slug": "kroger",
            "name": "Kroger",
            "logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/kroger.png",
            "country": "US",
            "sectors": [
                "Retail",
                "Healthcare",
                "Operations & Admin"
            ],
            "open_roles": 16780,
            "own_site_roles": 0,
            "source_types": [
                "career_site"
            ],
            "first_seen": "2026-08-02"
        },
        {
            "slug": "albertsons",
            "name": "Albertsons",
            "website": "albertsonscompanies.com",
            "website_verified": "2026-07-31",
            "logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/albertsons.png",
            "country": "US",
            "sectors": [
                "Retail",
                "Operations & Admin",
                "Hospitality"
            ],
            "open_roles": 11867,
            "own_site_roles": 0,
            "source_types": [
                "career_site"
            ],
            "first_seen": "2026-08-02"
        },
        {
            "slug": "accenture",
            "name": "accenture",
            "website": "accenture.com",
            "website_verified": "2026-07-31",
            "logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/accenture.png",
            "country": "IE",
            "industry": "Consulting",
            "org_type": "Enterprise",
            "sectors": [
                "Engineering",
                "Operations & Admin",
                "Data & Analytics"
            ],
            "open_roles": 10286,
            "own_site_roles": 0,
            "source_types": [
                "career_site",
                "ats"
            ],
            "first_seen": "2026-07-14"
        }
    ],
    "has_more": true,
    "limit": 3,
    "next_cursor": "MTAyODYfYWNjZW50dXJlH2FjY2VudHVyZQ",
    "offset": 0
}
List employers — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34522/list+employers?limit=3' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Retrieve one employer profile by its slug, including name, country, website and the number of live job postings. Use a slug returned by the employer list endpoint, for example accenture.
Endpoint ID: 34523
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34523/get+one+employer
INPUT PARAMETERS

Free test requests remaining: 3 of 3.

API EXAMPLE RESPONSE
JSON
{
    "data": {
        "slug": "accenture",
        "name": "accenture",
        "website": "accenture.com",
        "website_verified": "2026-07-31",
        "logo": "https://supabase-erioun.tzekos.eu/storage/v1/object/public/company-logos/logos/accenture.png",
        "country": "IE",
        "industry": "Consulting",
        "org_type": "Enterprise",
        "sectors": [
            "Engineering",
            "Operations & Admin",
            "Data & Analytics"
        ],
        "open_roles": 10286,
        "own_site_roles": 0,
        "source_types": [
            "career_site",
            "ats"
        ],
        "first_seen": "2026-07-14",
        "closure_history": [
            {
                "slug": "senior-sales-manager-strategic-partnerships-digital-advertising-sbm-am-cl8-c476fde5",
                "title": "Senior Sales Manager – Strategic Partnerships & Digital Advertising  (SBM) - AM (CL8)",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "scrum-master-a59ca399",
                "title": "Scrum Master",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "technology-architect-f04a5143",
                "title": "Technology Architect",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "manager-supply-chain-process-transformation-cd063702",
                "title": "Manager — Supply Chain Process Transformation",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "corporate-lawyer-b67530fe",
                "title": "Corporate Lawyer",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "enterprise-platform-advisor-96c11113",
                "title": "Enterprise Platform Advisor",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "business-architect-dd0818d3",
                "title": "Business Architect",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "technology-architect-d06c2376",
                "title": "Technology Architect",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "innovation-counsel-manager-global-services-legal-cbb6973a",
                "title": "Innovation counsel Manager - Global Services Legal",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            },
            {
                "slug": "administrador-de-base-de-datos-dynamodb-nosql-c7bef78a",
                "title": "Administrador de Base de datos DynamoDB / NoSQL",
                "closed_at": "2026-10-01",
                "closed_reason": "not_seen"
            }
        ]
    }
}
Get one employer — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34523/get+one+employer&SLUG=Required' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Return the available filter values (countries, remote statuses, categories, seniority levels and employment types) together with live posting counts, so you can build accurate search filters for the job endpoints.
Endpoint ID: 34524
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34524/filter+values+with+live+counts
INPUT PARAMETERS

Free test requests remaining: 3 of 3.

This endpoint does not require any input parameters.

API EXAMPLE RESPONSE
JSON
{
    "data": {
        "city": [
            {
                "value": "New York",
                "label": "New York",
                "count": 21971
            },
            {
                "value": "London",
                "label": "London",
                "count": 21306
            },
            {
                "value": "San Francisco",
                "label": "San Francisco",
                "count": 12838
            },
            {
                "value": "Berlin",
                "label": "Berlin",
                "count": 11653
            },
            {
                "value": "Chicago",
                "label": "Chicago",
                "count": 10055
            },
            {
                "value": "Houston",
                "label": "Houston",
                "count": 9957
            },
            {
                "value": "Austin",
                "label": "Austin",
                "count": 8455
            },
            {
                "value": "Paris",
                "label": "Paris",
                "count": 8299
            },
            {
                "value": "Los Angeles",
                "label": "Los Angeles",
                "count": 8296
            },
            {
                "value": "Dallas",
                "label": "Dallas",
                "count": 7651
            },
            {
                "value": "Atlanta",
                "label": "Atlanta",
                "count": 7331
            },
            {
                "value": "Toronto",
                "label": "Toronto",
                "count": 6606
            },
            {
                "value": "Bengaluru",
                "label": "Bengaluru",
                "count": 6569
            },
            {
                "value": "Boston",
                "label": "Boston",
                "count": 6540
            },
            {
                "value": "Nashville",
                "label": "Nashville",
                "count": 6437
            },
            {
                "value": "Amsterdam",
                "label": "Amsterdam",
                "count": 5876
            },
            {
                "value": "Hamburg",
                "label": "Hamburg",
                "count": 5770
            },
            {
                "value": "Phoenix",
                "label": "Phoenix",
                "count": 5551
            },
            {
                "value": "Stockholm",
                "label": "Stockholm",
                "count": 5305
            },
            {
                "value": "Charlotte",
                "label": "Charlotte",
                "count": 5234
            },
            {
                "value": "Miami",
                "label": "Miami",
                "count": 5215
            },
            {
                "value": "Columbus",
                "label": "Columbus",
                "count": 5186
            },
            {
                "value": "Denver",
                "label": "Denver",
                "count": 5121
            },
            {
                "value": "München",
                "label": "München",
                "count": 4949
            },
            {
                "value": "Seattle",
                "label": "Seattle",
                "count": 4758
            },
            {
                "value": "Madrid",
                "label": "Madrid",
                "count": 4585
            },
            {
                "value": "San Antonio",
                "label": "San Antonio",
                "count": 4559
            },
            {
                "value": "San Diego",
                "label": "San Diego",
                "count": 4488
            },
            {
                "value": "New York City",
                "label": "New York City",
                "count": 4223
            },
            {
                "value": "Mumbai",
                "label": "Mumbai",
                "count": 4195
            },
            {
                "value": "Philadelphia",
                "label": "Philadelphia",
                "count": 4176
            },
            {
                "value": "Indianapolis",
                "label": "Indianapolis",
                "count": 4132
            },
            {
                "value": "Bangalore",
                "label": "Bangalore",
                "count": 4122
            },
            {
                "value": "Las Vegas",
                "label": "Las Vegas",
                "count": 4061
            },
            {
                "value": "Sydney",
                "label": "Sydney",
                "count": 3645
            },
            {
                "value": "Hyderabad",
                "label": "Hyderabad",
                "count": 3615
            },
            {
                "value": "Pune",
                "label": "Pune",
                "count": 3506
            },
            {
                "value": "Richmond",
                "label": "Richmond",
                "count": 3441
            },
            {
                "value": "Arlington",
                "label": "Arlington",
                "count": 3431
            },
            {
                "value": "Dubai",
                "label": "Dubai",
                "count": 3419
            },
            {
                "value": "Tampa",
                "label": "Tampa",
                "count": 3378
            },
            {
                "value": "Pittsburgh",
                "label": "Pittsburgh",
                "count": 3305
            },
            {
                "value": "Cincinnati",
                "label": "Cincinnati",
                "count": 3257
            },
            {
                "value": "San Jose",
                "label": "San Jose",
                "count": 3230
            },
            {
                "value": "Dublin",
                "label": "Dublin",
                "count": 3197
            },
            {
                "value": "Barcelona",
                "label": "Barcelona",
                "count": 3105
            },
            {
                "value": "Portland",
                "label": "Portland",
                "count": 3058
            },
            {
                "value": "Orlando",
                "label": "Orlando",
                "count": 3028
            },
            {
                "value": "Memphis",
                "label": "Memphis",
                "count": 2925
            },
            {
                "value": "Tokyo",
                "label": "Tokyo",
                "count": 2865
            },
            {
                "value": "Jacksonville",
                "label": "Jacksonville",
                "count": 2846
            },
            {
                "value": "Vancouver",
                "label": "Vancouver",
                "count": 2831
            },
            {
                "value": "Columbia",
                "label": "Columbia",
                "count": 2787
            },
            {
                "value": "Kansas City",
                "label": "Kansas City",
                "count": 2786
            },
            {
                "value": "Munich",
                "label": "Munich",
                "count": 2777
            },
            {
                "value": "Warsaw",
                "label": "Warsaw",
                "count": 2766
            },
            {
                "value": "Birmingham",
                "label": "Birmingham",
                "count": 2750
            },
            {
                "value": "Springfield",
                "label": "Springfield",
                "count": 2733
            },
            {
                "value": "Montreal",
                "label": "Montreal",
                "count": 2633
            },
            {
                "value": "Manchester",
                "label": "Manchester",
                "count": 2609
            },
            {
                "value": "Louisville",
                "label": "Louisville",
                "count": 2598
            },
            {
                "value": "Raleigh",
                "label": "Raleigh",
                "count": 2487
            },
            {
                "value": "Salt Lake City",
                "label": "Salt Lake City",
                "count": 2477
            },
            {
                "value": "Madison",
                "label": "Madison",
                "count": 2467
            },
            {
                "value": "Baltimore",
                "label": "Baltimore",
                "count": 2461
            },
            {
                "value": "Köln",
                "label": "Köln",
                "count": 2444
            },
            {
                "value": "Rochester",
                "label": "Rochester",
                "count": 2416
            },
            {
                "value": "São Paulo",
                "label": "São Paulo",
                "count": 2412
            },
            {
                "value": "Cambridge",
                "label": "Cambridge",
                "count": 2409
            },
            {
                "value": "Fort Worth",
                "label": "Fort Worth",
                "count": 2306
            },
            {
                "value": "Melbourne",
                "label": "Melbourne"
            }
        ]
    },
    "_note": "Response truncated for documentation purposes"
}
Filter values with live counts — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34524/filter+values+with+live+counts' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Report how fresh the data is: when the ledger was last refreshed and verified, and the current live posting totals. Useful for monitoring and for showing a last-updated stamp in your product.
Endpoint ID: 34525
GET https://zylalabs.com/api/14072/joa+job+opportunities+api/34525/data+freshness
INPUT PARAMETERS

Free test requests remaining: 3 of 3.

This endpoint does not require any input parameters.

API EXAMPLE RESPONSE
JSON
{
    "data": {
        "age_seconds": 7285,
        "closures": {
            "last_24h": 27026,
            "last_7d": 469688,
            "note": "Roles that left their source. GET /v1/jobs/closed.",
            "reasons": [
                "expired_upstream",
                "not_seen"
            ],
            "retention": "kept indefinitely",
            "total": 7067255
        },
        "field_coverage": {
            "description": 1979847,
            "description_pct": 89.13,
            "employment_type": 175567,
            "employment_type_pct": 7.9,
            "note": "published = carried by the source. inferred = derived by us. See field_sources on every job.",
            "remote_inferred": 1972518,
            "remote_inferred_pct": 88.8,
            "remote_published": 244583,
            "remote_published_pct": 11.01,
            "salary_published": 149122,
            "salary_published_pct": 6.71
        },
        "generated_at": "2026-10-02T00:55:53Z",
        "ledger_rows": 10331214,
        "live_listings": 2221329,
        "measured_at": "2026-10-01T22:54:27Z",
        "population_note": "live_listings is what /v1/jobs will serve you. withheld_listings are present but gated (quality verdicts, employer opt-outs); live + withheld + closed = ledger_rows.",
        "refresh_note": "Measured by ops/refresh.sh every ~3h (db/100) and read here in O(1). Every count below is as of measured_at, including reverified_last_hour — that is the hour before the measurement, not the hour before your request.",
        "salary_normalisation": {
            "assumptions": {
                "days_per_year": 260,
                "hours_per_year": 2080,
                "unknown_period_or_currency": "yields null, never a guess",
                "weeks_per_year": 52
            },
            "note": "Indicative rates used ONLY to bucket salaries for filtering. Not a settlement rate.",
            "rates_as_of": "2026-08-04",
            "rates_eur_per_unit": {
                "AED": 0.25,
                "AUD": 0.6,
                "BRL": 0.16,
                "CAD": 0.68,
                "CHF": 1.04,
                "CZK": 0.04,
                "DKK": 0.134,
                "EUR": 1,
                "GBP": 1.17,
                "HKD": 0.118,
                "HUF": 0.0025,
                "ILS": 0.25,
                "INR": 0.011,
                "JPY": 0.006,
                "MXN": 0.049,
                "MYR": 0.2,
                "NOK": 0.086,
                "NZD": 0.55,
                "PHP": 0.016,
                "PLN": 0.23,
                "RON": 0.2,
                "SEK": 0.088,
                "SGD": 0.68,
                "TRY": 0.026,
                "USD": 0.92,
                "ZAR": 0.05
            }
        },
        "stale": false,
        "verification": {
            "newest_verification": "2026-10-01T22:54:09Z",
            "note": "last_verified_at is when we last confirmed the vacancy still exists at its source, not when it was posted.",
            "oldest_verification": "2026-09-18T16:10:43Z",
            "reverified_last_24h": 2139274,
            "reverified_last_24h_pct": 96.31,
            "reverified_last_48h": 2163244,
            "reverified_last_48h_pct": 97.39,
            "reverified_last_7d": 2217748,
            "reverified_last_hour": 391684
        },
        "withheld_listings": 1042630
    }
}
Data freshness — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14072/joa+job+opportunities+api/34525/data+freshness' --header 'Authorization: Bearer YOUR_API_KEY' 


    

API Access Key & Authentication

After signing up, every developer is assigned a personal API access key, a unique combination of letters and digits provided to access to our API endpoint. To authenticate with the JOA Job Opportunities API simply include your bearer token in the Authorization header.

Headers
Header Description
Authorization Required Should be Bearer access_key. See "Your API Access Key" above when you are subscribed.

No long-term commitment. Upgrade, downgrade, or cancel anytime. Free Trial includes up to 50 requests.

(Save 2 months with annual billing 🎉)

Starts at
$10,000/Year


  • Custom Volume
  • Custom Rate Limit
  • Specialized Customer Support
  • Real-Time API Monitoring

Overview

Employer-direct job postings from more than 150 countries, with the receipts: a verified ledger of about 2.2 million live vacancies from roughly 145,000 employers (figures live on 2026-10-02; keyless live counts at https://api.jobopportunitiesapi.org/public/stats and /public/coverage), plus about 7 million closed roles kept with their closure date and reason. Every listing comes from an employer ATS, a company's own careers page, a public employment agency or a direct submission. Aggregator and staffing-agency redirect pages are held back by default, so the apply link is the employer's own. About 435,000 live postings are in the EU, EFTA and UK. What is different from a generic job feed: * Provenance on every field. Each job carries field_sources, naming each field as published (stated by the source), inferred (derived by us) or absent. Estimates are never presented as facts. * Last-verified timestamps. last_verified_at is when we last confirmed the vacancy still exists at its source, not when it was posted. * Closure history (top plan). GET /v1/jobs/closed returns roles that left their source, with the reason and date. A role that opened and closed in nine days is a hiring signal. * Filters that matter for hiring and market data: country, city, remote status (remote_confirmed=true returns only employer-stated remote), category, seniority, employment type, salary present, full-text q, posted_after, company. * A delta feed (GET /v1/changes?since=...) for incremental sync: created, updated, withdrawn and delisted rows in change order. Mid and top plans. How it works on this marketplace: authenticate with your Zyla API key as usual. One request returns up to 20 listings (limit max 20, cursor pagination via next_cursor). Typical uses: job boards and aggregators, recruiting and sales-intelligence tools, labour-market dashboards, research on hiring trends, AI agents. Plans: a free trial for testing, then monthly plans with higher request quotas and rate limits; the delta feed starts at the mid plans and the closure feed on the top plan. Need bulk exports, one-country unlimited rows, or 2M+ records a month? The same data is sold direct at https://jobopportunitiesapi.org/pricing (from EUR 29 a month, free tier of 1,000 records a month with no card). Also available as an MCP server for AI agents: https://api.jobopportunitiesapi.org/mcp. Docs: https://jobopportunitiesapi.org/docs. Operated by Loukas Tzekos (sole proprietorship, Greece). Contact: [email protected]

JOA Job Opportunities API FAQs

Each endpoint returns specific job-related data. For example, the job search endpoint provides live job postings, while the employer endpoint lists employers with open vacancies. Each response includes detailed information such as job titles, company names, locations, and application links.

Key fields include job ID, title, company, location, employment type, seniority, posted date, last verified timestamp, and apply URL. For employers, fields include name, country, open roles, and sectors.

The returned data is structured in JSON format. Each response contains a "data" object, which may include arrays of job postings or employer profiles, with each entry containing relevant fields and values.

Each endpoint provides distinct information: job postings include job details and application links, employer endpoints list employers and their open roles, and filter endpoints offer available filter values with live counts.

Parameters vary by endpoint. For job searches, you can filter by country, city, remote status, category, seniority, and employment type. The employer list can be filtered by name and country.

Response data is organized into a "data" array containing objects for each job or employer. Each object includes specific fields, allowing users to easily access and utilize the information relevant to their needs.

Data is sourced directly from employer ATS systems, company career pages, public employment agencies, and direct submissions. This ensures that job postings are authentic and employer-directed.

Typical use cases include job boards, recruiting tools, labor market analysis, and AI agents. Users can leverage the data to track hiring trends, analyze job market dynamics, and enhance recruitment strategies.

General FAQs

To obtain your API key, first sign in to your account and navigate to the API you want to use. From the API's Pricing section, choose a plan and complete the subscription process. Once subscribed, return to the API page and you will see your API Access Key displayed at the top of the documentation page. You can use this key to authenticate your requests.

You can’t switch APIs during the free trial. If you subscribe to a different API, your trial will end and the new subscription will start as a paid plan.

The free trial lasts for 7 days and allows you to make up to 50 API requests.

No, the free trial is available only once, so we recommend using it on the API that interests you the most. Most of our APIs offer a free trial, but some may not include this option.

Yes. If the API offers a free trial, you will see a "Free 7-Day Trial" option in its Pricing section. The trial lasts for 7 days and allows up to 50 API requests, enabling you to evaluate the API before subscribing to a paid plan.

Zyla API Hub is like a big store for APIs, where you can find thousands of them all in one place. We also offer dedicated support and real-time monitoring of all APIs. Once you sign up, you can pick and choose which APIs you want to use. Just remember, each API needs its own subscription. But if you subscribe to multiple ones, you'll use the same key for all of them, making things easier for you.

Prices are listed in USD (United States Dollar), EUR (Euro), CAD (Canadian Dollar), AUD (Australian Dollar), and GBP (British Pound). We accept all major debit and credit cards. Our payment system uses the latest security technology and is powered by Stripe, one of the world's most reliable payment companies. If you have any trouble paying by card, just contact us at [email protected]

Additionally, if you already have an active subscription in any of these currencies (USD, EUR, CAD, AUD, GBP), that currency will remain for subsequent subscriptions. You can change the currency at any time as long as you don't have any active subscriptions.
The local currency shown on the pricing page is based on the country of your IP address and is provided for reference only. The actual prices are in USD (United States Dollar). When you make a payment, the charge will appear on your card statement in USD, even if you see the equivalent amount in your local currency on our website. This means you cannot pay directly with your local currency.
Occasionally, a bank may decline the charge due to its fraud protection settings. We suggest reaching out to your bank initially to check if they are blocking our charges. Also, you can access the Billing Portal and change the card associated to make the payment. If these does not work and you need further assistance, please contact our team at [email protected]
Prices are determined by a recurring monthly or yearly subscription, depending on the chosen plan.
API calls are deducted from your plan based on successful requests. Each plan comes with a specific number of calls that you can make per month. Only successful calls, indicated by a Status 200 response, will be counted against your total. This ensures that failed or incomplete requests do not impact your monthly quota.
Zyla API Hub works on a recurring monthly subscription system. Your billing cycle will start the day you purchase one of the paid plans, and it will renew the same day of the next month. So be aware to cancel your subscription beforehand if you want to avoid future charges.
To upgrade your current subscription plan, simply go to the pricing page of the API and select the plan you want to upgrade to. The upgrade will be instant, allowing you to immediately enjoy the features of the new plan. Please note that any remaining calls from your previous plan will not be carried over to the new plan, so be aware of this when upgrading. You will be charged the full amount of the new plan.
To check how many API calls you have left for the current month, refer to the 'X-Zyla-API-Calls-Monthly-Remaining' field in the response header. For example, if your plan allows 1,000 requests per month and you've used 100, this field in the response header will indicate 900 remaining calls.

You can monitor your API usage through the response headers included with every request:

x-zyla-api-calls-monthly-used: Shows the total number of API requests you have used during the current billing period.
x-zyla-api-calls-monthly-remaining: Shows the number of API requests you have remaining for the current billing period.

The 'X-Zyla-RateLimit-Reset' header shows the number of seconds until your rate limit resets. This tells you when your request count will start fresh. For example, if it displays 3,600, it means 3,600 seconds are left until the limit resets.

Yes, you can cancel your subscription at any time. Simply go to the Pricing section of the API you're subscribed to and click the "Unsubscribe" button.

Please note that upgrades, downgrades, and cancellations take effect immediately. Once your subscription is canceled, access to the service will end immediately, regardless of any remaining API calls in your quota.

After 7 days, you will be charged the full amount for the plan you were subscribed to during the trial. Therefore, it's important to cancel before the trial period ends. Refund requests for forgetting to cancel on time are not accepted.
When you subscribe to an API free trial, you can make up to 50 API calls. If you wish to make additional API calls beyond this limit, the API will prompt you to perform an "Start Your Paid Plan." You can find the "Start Your Paid Plan" button in your profile under Subscription -> Choose the API you are subscribed to -> Pricing tab.
You can contact us through our chat channel to receive immediate assistance. We are always online from 8 am to 5 pm (EST). If you reach us after that time, we will get back to you as soon as possible. Additionally, you can contact us via email at [email protected]

Please have a look at our Refund Policy: https://zylalabs.com/terms#refund


Related APIs