Discover/landing API
live

landing APIlanding.jobs

Search and retrieve tech job listings from landing.jobs. Filter by keyword, location, skills, contract type, and more. Full job detail including salary, HTML description, and related jobs.

Endpoint health
monitored
get_job
search_jobs
Checks pendingself-healing
Endpoints
2
Updated
38m ago

What is the landing API?

The landing.jobs API exposes 2 endpoints to search and retrieve tech job listings from landing.jobs, a European-focused tech job board. The search_jobs endpoint returns up to 50 job summaries per page — including id, title, company, location, work model, salary, skills, and category facets — while get_job delivers the full role description (HTML and plain text), office locations, language requirements, and related job suggestions.

This call costs1 credit / call— charged only on success
Try it
City name for location filtering (e.g. Porto). Must be given together with `country_code`.
1-based result page; each page holds up to 50 jobs.
Free-text keyword matched against job title, skills and description (one shape: a technology name such as python).
Only jobs published within the last N days. Omitted = any time.
Search radius in km around `city`; only used when `city` and `country_code` are set.
Comma-separated skill names exactly as shown on the site (e.g. Python,Java). The scraper splits on commas — do NOT pass an array.
Comma-separated job category codes as returned in `categories[*].code` of this endpoint (e.g. data-scientist). Omitted = all categories.
Comma-separated contract type codes. Omitted = all contract types.
Comma-separated codes of the language the job ad is written in. Omitted = any language.
Comma-separated experience level codes. Omitted = all levels.
Minimum yearly salary in EUR as digits (e.g. 50000); only jobs with a published salary at or above it match.
Comma-separated work-model codes to include. Omitted = all work models.
Whether a job must have all listed `skills` or any of them; only used when `skills` is set.
2-letter ISO country code of `city` (e.g. PT). Must be given together with `city`.
When true, excludes recruitment-agency postings and keeps only direct employers.
api.parse.bot/scraper/4aa53adc-d041-4a91-9931-e04997eadbe7/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4aa53adc-d041-4a91-9931-e04997eadbe7/search_jobs?query=python' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 2 totalmissing one? ·

Searches published job offers on landing.jobs and returns one page of up to 50 job summaries (id, title, company, location, work model, contract type, experience, salary when published, skills, publish date) plus the total match count, a has_more flag and the category facet counts for the current search. Results are ordered newest first as on the site. Pagination is caller-controlled through `page` (1-based, 50 results per page; omitted = page 1); `has_more` is false on the last page. All filters are optional and combine with AND; multi-value filters accept comma-separated codes. Location filtering requires both `city` and `country_code` (a country code alone is not applied by the site). Skill filtering requires at least one skill name and uses `skill_match` to choose all-of vs any-of. An unknown search term returns an empty `jobs` list with `total_results` 0 as a valid success.

Input
ParamTypeDescription
citystringCity name for location filtering (e.g. Porto). Must be given together with `country_code`.
pageinteger1-based result page; each page holds up to 50 jobs.
querystringFree-text keyword matched against job title, skills and description (one shape: a technology name such as python).
postedstringOnly jobs published within the last N days. Omitted = any time.
radiusstringSearch radius in km around `city`; only used when `city` and `country_code` are set.
skillsstringComma-separated skill names exactly as shown on the site (e.g. Python,Java). The scraper splits on commas — do NOT pass an array.
categorystringComma-separated job category codes as returned in `categories[*].code` of this endpoint (e.g. data-scientist). Omitted = all categories.
contractstringComma-separated contract type codes. Omitted = all contract types.
languagestringComma-separated codes of the language the job ad is written in. Omitted = any language.
experiencestringComma-separated experience level codes. Omitted = all levels.
min_salarystringMinimum yearly salary in EUR as digits (e.g. 50000); only jobs with a published salary at or above it match.
work_modelstringComma-separated work-model codes to include. Omitted = all work models.
skill_matchstringWhether a job must have all listed `skills` or any of them; only used when `skills` is set.
country_codestring2-letter ISO country code of `city` (e.g. PT). Must be given together with `city`.
direct_employersbooleanWhen true, excludes recruitment-agency postings and keeps only direct employers.
Response
{
  "type": "object",
  "fields": {
    "jobs": "array of job summaries; each has id (integer), title, slug, url, company_name, company_slug, company_id, company_logo_url, company_size, industry, location (null for global-remote jobs), country_code, office_locations (array of {label, city, country_code}), work_model (Remote/Hybrid/Onsite label), full_remote/partial_remote/global_remote/onsite_job booleans, timezone_tolerance, contract_type, experience_level, experience_min/experience_max (years, max may be null), salary and rate (published range strings, null when not disclosed), hiring_bonus, published_at (YYYY-MM-DD), is_new, skills, must_have_skills, other_required_skills (arrays of skill names)",
    "page": "integer, the page returned",
    "has_more": "boolean, true when a further page exists",
    "categories": "array of {label, code, count} category facets for this search; `code` is the value accepted by the category filter",
    "total_results": "integer, total matching jobs across all pages as reported by the site"
  },
  "sample": {
    "data": {
      "jobs": [
        {
          "id": 19711,
          "url": "https://landing.jobs/at/we-are-meta/staff-python-engineer",
          "rate": null,
          "slug": "staff-python-engineer",
          "title": "Staff Python Engineer",
          "is_new": false,
          "salary": null,
          "skills": [
            "Python",
            "Microsoft Azure",
            "Terraform",
            "CI/CD",
            "FastAPI",
            "IaC",
            "Azure Kubernetes Service (AKS)"
          ],
          "industry": "Technology",
          "location": "Portugal",
          "company_id": 5265,
          "onsite_job": false,
          "work_model": "Remote",
          "full_remote": true,
          "company_name": "We are META",
          "company_size": "51 to 200 people",
          "company_slug": "we-are-meta",
          "country_code": "PT",
          "hiring_bonus": null,
          "published_at": "2026-07-29",
          "contract_type": "Permanent / Contractor",
          "global_remote": false,
          "experience_max": null,
          "experience_min": 10,
          "partial_remote": false,
          "company_logo_url": "https://s3.eu-central-1.amazonaws.com/storage.landing.jobs/bkenk26d6nfr84rlhuvorp4gkvg3",
          "experience_level": "Senior",
          "must_have_skills": [
            "FastAPI",
            "Terraform",
            "Python",
            "Microsoft Azure",
            "Azure Kubernetes Service (AKS)",
            "IaC",
            "CI/CD"
          ],
          "office_locations": [
            {
              "city": null,
              "label": "Portugal",
              "country_code": "PT"
            }
          ],
          "timezone_tolerance": null,
          "other_required_skills": []
        }
      ],
      "page": 1,
      "has_more": false,
      "categories": [
        {
          "code": "data-scientist",
          "count": 2,
          "label": "Data"
        },
        {
          "code": "back-end-developer",
          "count": 1,
          "label": "Back-end Developer"
        }
      ],
      "total_results": 4
    },
    "status": "success"
  }
}

About the landing API

Search Tech Job Listings

The search_jobs endpoint accepts a mix of free-text and structured filters. The query parameter matches against job title, skills, and description — useful for technology names like Python or React. Structured filters include category (comma-separated category codes from the categories facet returned in the same response), contract (contract type codes), skills (comma-separated skill names exactly as the site uses them), and posted (a window in days, e.g. 7 for jobs from the past week). Location filtering uses city and country_code together, with an optional radius in km. Results are paginated via the page parameter; each page holds up to 50 jobs, and has_more tells you whether another page exists alongside a total_results count.

Job Summary Fields

Each item in the jobs array from search_jobs includes id, title, slug, url, company_name, company_slug, company_id, company_logo_url, work model, contract type, experience level, salary when the employer chose to publish it, a list of skills, and publish date. The categories array in the same response gives label, code, and count facets, letting you build drill-down navigation or populate a filter UI without a separate lookup.

Full Job Detail

The get_job endpoint takes company_slug and slug — both available directly from any search_jobs result — and returns the complete job record. This includes role_description (plain text) and role_description_html (raw HTML), office_locations as an array of {label, city, country_code} objects, languages required, work_model, remote_details (free-text remote-work conditions, or null), status, and a related_jobs array with enough fields to call get_job again without another search.

Coverage Notes

landing.jobs is oriented toward tech roles in Europe, particularly Portugal and the UK, though it carries listings from global remote-friendly companies. Salary data is present only when the employer opted to publish it; the field is absent or null otherwise. Requirement and perk sections in get_job are returned when the employer filled them separately but are often null, with that content folded into the main role_description instead.

Reliability & maintenance

The landing API is a managed, monitored endpoint for landing.jobs — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when landing.jobs changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official landing.jobs API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate European tech job listings filtered by skill (e.g. skills=Python,Django) for a niche job board.
  • Monitor new remote roles by polling search_jobs with posted=1 and work_model set to Remote.
  • Extract salary ranges from search_jobs results to benchmark compensation for specific tech categories.
  • Build a company profile page by collecting all jobs for a given company_slug via repeated search_jobs calls.
  • Populate a category-filtered job feed using the categories[*].code values returned in each search response.
  • Fetch role_description_html from get_job to render fully formatted job descriptions in a third-party application.
  • Recommend related tech roles by traversing the related_jobs array returned by get_job.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does landing.jobs have an official developer API?+
landing.jobs does not publish a documented public developer API for external use. This Parse API provides structured access to the job data available on the site.
How does pagination work in `search_jobs`, and how do I know when I've reached the last page?+
Each call returns up to 50 results for the given page (1-based). The response includes a has_more boolean — when it is false, you have retrieved all matching pages. The total_results field gives the full match count across all pages so you can calculate page depth before iterating.
Is salary information always present in search results?+
No. Salary data appears in a job summary only when the employer chose to publish it on landing.jobs. The field will be absent or null for listings where the employer did not disclose compensation.
Can I retrieve job applications or candidate profiles through this API?+
Not currently. The API covers job listings and their details — search results, descriptions, office locations, skills, and related jobs. Candidate profiles, application status, and recruiter-side data are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting those resources if they become accessible.
Does `get_job` always return separate requirement and perk sections?+
Not reliably. The get_job endpoint returns dedicated requirement and perk fields when the employer filled them in separately, but these are frequently null because many employers write everything into the main role_description field instead. Always fall back to role_description or role_description_html as the authoritative content source.
Page content last updated . Spec covers 2 endpoints from landing.jobs.
Related APIs in JobsSee all →
xing.com API
Access data from xing.com.
welcometothejungle.com API
Search and discover job postings and company information from Welcome to the Jungle, including detailed job listings, company profiles with employee statistics and social links, and the ability to browse all available positions. Find the perfect role by searching jobs and companies, then access comprehensive details about positions and organizations in one place.
jobs.lever.co API
Access job postings on any Lever-hosted company job board. List, filter, search, and group open roles, retrieve full posting details, and extract application form questions via Lever's public API.
hubmub.com API
Search and discover job opportunities on HubMub by filtering results based on your preferred search terms, job type, category, industry, and location. Retrieve detailed information about specific job listings to help you find the right position that matches your career goals.
totaljobs.com API
Search and browse job listings from across the UK on TotalJobs, then access detailed information about specific positions including requirements, salary, and application details. Quickly compare opportunities and find roles that match your criteria.
nofluffjobs.com API
Search and filter job openings from No Fluff Jobs by category, seniority level, location, and keywords to find IT, marketing, sales, and HR positions tailored to your needs. Retrieve detailed information about specific job postings including requirements, company details, and employment terms to help you make informed application decisions.
cv.lv API
Search for job listings on CV.lv and access detailed job descriptions, categories, locations, and information about top employers. Find the right opportunity by browsing available positions across different industries and regions.
dailyremote.com API
Search and browse remote job listings from DailyRemote.com with complete job details including descriptions, salary ranges, company information, and hiring process steps. Access structured job data and company contact details to find and evaluate remote opportunities all in one place.