All feed pages

City feed

Singapore job listings API

Southeast Asia's tech capital in one stable feed. Singapore jobs from Greenhouse, Lever, Ashby, and Workable — international companies with regional HQs and Singapore-native startups. Web3 and crypto firms have also clustered here more than in most other APAC markets, drawn by the city-state's regulatory clarity.

The Problem

Singapore's position as APAC's tech hub drives high demand for structured hiring data, but clean, direct-employer postings are hard to surface amid the regional noise.

Our Solution

We pull Singapore roles directly from employer career pages, giving you a high-fidelity feed of the city-state's tech hiring without the aggregator noise that dominates Southeast Asian job data. Note that our filters key on country_id here, since Singapore is both a city and a country — the distinction most other city entries need doesn't apply.

What you're getting

Source
Direct postings from ATS and employers career sites.
Companies
This batch includes roles from Check Point Software Technologies, Evooq, Eurofins, Grab, and PSI CRO, and more.
Volume
Preview shows 10 roles (limit 10, with more pages available). Authenticate and paginate to explore the full Singapore index.
Filters
Filter by country, state, city, title, remote setting, experience level, and salary. Full filter reference in the Jobs API docs.

At a glance

  • Strong fintech and regional HQ representation — companies using Greenhouse and Lever in Singapore tend to be international and well-funded.
  • English-language roles from international companies — immediately useful for global boards adding an APAC market.
  • A natural entry point for APAC job board coverage — pair with Sydney or Tokyo for a broader Southeast Asia and Pacific product.
  • Web3 and crypto firms are a distinct local specialty, drawn by Singapore's regulatory clarity relative to other APAC jurisdictions.
  • Because Singapore is a city-state, country_id gives you complete coverage in one query without needing a separate city-level filter.

When you are ready for every filter, validation rule, and response field, use the Jobs API reference.

Global Platform Scale

1,577,168

Total Jobs Indexed

+10,320

Added Past 24h

+852,605

Added Past 30 Days

24,882

Employers

Example request

Same query as the playground, as cURL. Use your real key on the server only.

curl -X GET "https://api.cleanjobdata.com/jobs?country_id=199&max_age=30d" \
  -H "Authorization: Bearer YOUR_API_KEY"

How to integrate

1. Get an API key

Sign up for CleanJobData, open the dashboard, and create or copy your API key. Send it as Authorization: Bearer <token> on every request (server-side only in production—never expose keys in mobile apps or public repos).

2. Query Singapore listings

Start from GET /jobs?country_id=199 for Singapore, then narrow with &title=..., &remote=true, &experience_level=SE,EX, or &city_id=.../&state_id=... for a tighter audience — e.g. GET /jobs?country_id=199&title=engineer&remote=true.

Use a modest limit while prototyping, default to sort_by=published for recency, then follow pagination.next_page for large imports. Back off with exponential retry if you hit rate limits.

3. Shape data for your product

List responses default to a lightweight field set with no description — add extra_fields=description when a view needs the full HTML body (e.g. GET /jobs?extra_fields=description), or pass fields=id,title,company,location,salary_min,salary_max to replace the default set entirely with just what a card renders. Detail requests (GET /jobs/:id) always include description, no extra param needed.

FAQ

Can I use this in production for a paid job board?

Yes—that is the intended use case. The free Trial tier (250 list + 500 detail requests/mo, no card required) is enough to prototype and verify data quality; Starter ($97/mo, 100,000 requests/mo) and Pro ($297/mo, 500,000 requests/mo) cover most production job boards. Keep your API key server-side, cache responses where it makes sense, and follow the cursor pagination contract for large imports.

How do I narrow results beyond Singapore?

Combine the location filters already applied on this page with title (GET /jobs?title=React+engineer), remote=true or the finer remote_type=fully_remote|remote_country|remote_region|hybrid, experience_level=SE,EX for seniority, or salary=100000,180000 for a compensation range. Every combination is documented with validation rules on the Jobs API reference (/docs/api/jobs).

What rate limits or quotas should I expect?

Every response includes X-RateLimit-Limit and X-RateLimit-Remaining headers, so you can watch your usage and slow down before hitting a 429 rather than reacting to one. The per-second limit resets within a second or two if you do hit it — a short wait and retry is enough. A separate, unrelated 429 fires if you exhaust your plan's monthly request quota; that one won't clear by waiting, so check the error message text to tell the two apart.

How is this different from scraping job boards myself?

We normalize employers, locations, salary text, and remote flags into one schema, refresh listings continuously, and expose stable HTTP filters. You spend time on product and UX instead of repairing scrapers every time a site changes markup.

How fresh is the job data?

We refresh listings continuously from our sources. Use sort_by=published (the default) for newest-first ordering, and for incremental syncs use created_max_age=1d (or 6h, 7d — a rolling window on ingestion time) rather than published_after, since a listing can finish processing after its original publish date and published_after alone can miss it.

Do you return full job descriptions on list endpoints?

Not by default — list responses use a lightweight field set to keep list pages and mobile clients fast. Add extra_fields=description to a list request (e.g. GET /jobs?extra_fields=description) to include it, or use fields=id,title,description,... to request an explicit set. The single-job detail endpoint (GET /jobs/:id) always includes the full description with no extra param needed.