# Built In Jobs Scraper (`fetch_cat/builtin-jobs-scraper`) Actor

Scrape public Built In job listings by keyword, location, remote preference, category, and recency.

- **URL**: https://apify.com/fetch\_cat/builtin-jobs-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Jobs, Lead generation, Developer tools
- **Stats:** 5 total users, 3 monthly users, 91.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / 1,000 job results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Built In Jobs Scraper

Scrape public Built In job listings by keyword, location, job category, remote preference, and recency.

Use this Actor to export Built In job data for recruiting research, hiring-market monitoring, job-board enrichment, sales intelligence, and API workflows. It saves one dataset row per public job listing.

### At a glance

- **Best for:** Built In job search exports, remote tech roles, category tracking, and company hiring signals.
- **Inputs:** Built In search URLs, keyword, location slug, category slug, remote preference, recency, item limit, and detail-page mode.
- **Outputs:** Job title, company, job URL, Built In job ID, location, remote type, description, posted date, category, skills, salary, company URL, and scrape timestamp.
- **Access:** Public Built In pages only. No login, cookies, or private account data.
- **Cost:** `$0.005` per run plus the `result` event for each saved job listing.

### Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

- **[Scrape Built In Fintech Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-fintech-jobs)**
- **[Scrape Built In Sales Engineer Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-sales-engineer-jobs)**
- **[Scrape Built In Cybersecurity Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-cybersecurity-jobs)**
- **[Scrape Built In AI Engineer Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-ai-engineer-jobs)**
- **[Scrape Built In DevOps Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-devops-jobs)**
- **[Scrape Built In Product Manager Jobs](https://apify.com/fetch_cat/builtin-jobs-scraper/examples/scrape-built-in-product-manager-jobs)**
- **[View all ready-to-run examples](https://apify.com/fetch_cat/builtin-jobs-scraper/examples)** (10 examples)

### What can it do?

- **Export Built In job searches:** Save public job listings from keyword, location, category, remote, and recency filters.
- **Collect hiring signals:** Capture company names, job titles, locations, skills, salary text, and job URLs for recruiting or sales workflows.
- **Enrich listing rows:** Open detail pages when you need fuller descriptions, posted dates, salary text, or location data.
- **Monitor recent roles:** Use `postedWithinDays` and schedules to keep a fresh feed of newly visible jobs.
- **Use as a Built In API workflow:** Run from the Apify API, export CSV/Excel/JSON, or call it through MCP-compatible agents.

### Input example

```json
{
  "keyword": "python",
  "location": "chicago",
  "remotePreference": "remote-or-hybrid",
  "category": "dev-engineering",
  "postedWithinDays": 7,
  "maxItems": 20,
  "includeDetails": true
}
```

### Output example

```json
{
  "title": "Senior Python Engineer",
  "companyName": "Example Software",
  "jobUrl": "https://builtin.com/job/senior-python-engineer/123456",
  "jobId": "123456",
  "location": "Chicago, IL",
  "remoteType": "Remote or Hybrid",
  "description": "Build data products for customer-facing teams.",
  "postedDate": "2026-07-01",
  "category": "Dev + Engineer",
  "skills": ["Python", "AWS", "SQL"],
  "salary": "USD 140000-170000 yearly",
  "companyUrl": "https://builtin.com/company/example-software",
  "scrapedAt": "2026-07-03T10:00:00.000Z"
}
```

### Input configuration

| Setting | JSON key | What it does |
| --- | --- | --- |
| Start URLs | `startUrls` | Optional Built In jobs pages, category pages, location pages, or search URLs. |
| Keyword | `keyword` | Adds a Built In search keyword such as job title, skill, or company. |
| Location slug | `location` | Built In location slug, such as `chicago`, `new-york`, or `san-francisco`. |
| Remote preference | `remotePreference` | Uses `remote`, `hybrid`, `remote-or-hybrid`, or `any` when generating search URLs. |
| Category slug | `category` | Optional category such as `dev-engineering`, `data-analytics`, `sales`, `marketing`, or `product`. |
| Posted or updated within days | `postedWithinDays` | Adds Built In's recency filter when supported by the generated URL. |
| Maximum jobs | `maxItems` | Caps saved job listings. The Actor enforces a maximum of 5,000. |
| Open job detail pages | `includeDetails` | When enabled, visits each job page to enrich description, posted date, salary, and location when available. |
| Resume from source number | `resumeFromStartIndex` | Optional 0-based start-URL index for continuing after an interrupted multi-source run. |
| Resume from page | `resumeFromPage` | Optional 1-based listing page number for continuing the selected source. |

### Output fields

| Field | Type | Description |
| --- | --- | --- |
| `title` | string | Job title. |
| `companyName` | string or null | Hiring company name when visible. |
| `jobUrl` | string | Built In job URL. |
| `jobId` | string or null | Listing ID parsed from the page. |
| `location` | string or null | Public location or applicant-location requirement. |
| `remoteType` | string or null | Remote, hybrid, on-site, or schema-provided remote value. |
| `description` | string or null | Listing or detail-page job description. |
| `postedDate` | string or null | Posted date when exposed on the detail page. |
| `category` | string or null | Built In category shown on the listing card. |
| `skills` | array | Skills or tags visible on the card. |
| `salary` | string or null | Salary range or base salary text when visible. |
| `companyUrl` | string or null | Built In company profile URL. |
| `scrapedAt` | string | ISO timestamp when the row was saved. |

### Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

| Event | What is charged | Price |
| --- | --- | ---: |
| `start` | One-time fee per run | $0.005 |

| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `result` | Per job listing saved to the dataset | $0.04128 / 1,000 | $0.0359 / 1,000 | $0.028 / 1,000 | $0.02154 / 1,000 | $0.01436 / 1,000 | $0.01005 / 1,000 |

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

### Common workflows

- **Recruiting research:** Track Built In roles by keyword, location, and category to see where companies are hiring.
- **Sales intelligence:** Find companies actively hiring for roles that signal budget, stack, or growth.
- **Job-board enrichment:** Pull public job URLs, titles, companies, salary text, and skills into your own workflow.
- **Market monitoring:** Schedule a small run for recent roles and export CSV, JSON, Excel, or API results.

### Tips

- **Use category slugs:** `dev-engineering`, `data-analytics`, `sales`, `marketing`, and `product` are safer than free-form category names.
- **Start small:** Use `maxItems: 20` for a first run, then increase once the search shape is right.
- **Turn off details for speed:** Set `includeDetails: false` when you only need listing-card fields.
- **Use recency filters:** `postedWithinDays` helps monitoring runs focus on new or updated jobs.

### Limits and caveats

- **Public data only:** The Actor does not log in and cannot access private applicant or account data.
- **Site changes can affect fields:** Built In page markup can change; fields may become null if a page no longer exposes them.
- **Detail pages are optional:** Posted dates, fuller descriptions, and salary text are most reliable when `includeDetails` is enabled and the detail page loads.
- **No guarantee of exhaustive search:** Built In controls pagination and ranking; use narrow filters for repeatable monitoring.

### API usage

Run through the Apify API with the same JSON keys as the input schema:

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~builtin-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"python","category":"dev-engineering","remotePreference":"remote","maxItems":20}'
```

Node.js example:

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/builtin-jobs-scraper').call({
  keyword: 'python',
  category: 'dev-engineering',
  remotePreference: 'remote',
  maxItems: 20,
});
console.log(`Dataset: https://api.apify.com/v2/datasets/${run.defaultDatasetId}/items`);
```

### MCP and AI agents

For AI agents, use the official Apify MCP server. A focused single-Actor server URL is:

```text
https://mcp.apify.com?tools=fetch_cat/builtin-jobs-scraper
```

Claude CLI setup:

```bash
claude mcp add apify-builtin-jobs "https://mcp.apify.com?tools=fetch_cat/builtin-jobs-scraper"
```

JSON config example:

```json
{
  "mcpServers": {
    "apify-builtin-jobs": {
      "url": "https://mcp.apify.com?tools=fetch_cat/builtin-jobs-scraper"
    }
  }
}
```

Example prompts showing MCP usage:

- "Run Built In Jobs Scraper for remote Python engineering jobs posted in the last 7 days and return the saved job URLs and company names."
- "Find up to 20 Built In cybersecurity jobs updated this week and summarize company names, roles, locations, and salaries."
- "Scrape Built In product manager jobs in Chicago with detail pages enabled, then give me a CSV-ready table."

### FAQ

**Can I export Built In jobs to CSV or Excel?**\
Yes. Apify datasets can be downloaded as CSV, Excel, JSON, JSONL, XML, RSS, or accessed through the API.

**Does it require login or cookies?**\
No. It reads public Built In pages only.

**Why are salary or posted date fields empty?**\
Built In does not expose those values on every listing. Enable `includeDetails` for the best chance of filling detail-page fields.

**Can I schedule recurring monitoring?**\
Yes. Create an Apify schedule with a low `maxItems` value and a recency filter such as `postedWithinDays: 1` or `7`.

**Is this a Built In API alternative?**\
It can be used as a public-data export and API workflow for Built In job listings. It is not an official Built In API.

### Related actors

- [LinkedIn Jobs Scraper](https://apify.com/fetch_cat/linkedin-jobs-scraper)
- [Greenhouse Jobs Scraper](https://apify.com/fetch_cat/greenhouse-jobs-scraper)
- [Lever Jobs Scraper](https://apify.com/fetch_cat/lever-jobs-scraper)
- [Workday Jobs Scraper](https://apify.com/fetch_cat/workday-jobs-scraper)
- [SmartRecruiters Jobs Scraper](https://apify.com/fetch_cat/smartrecruiters-jobs-scraper)

### Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

### Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses job-search inputs and public job-posting results to produce the output dataset and sends requests to public Builtin Jobs pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

# Actor input Schema

## `startUrls` (type: `array`):

Optional Built In jobs pages to scrape, such as https://builtin.com/jobs/remote or category/location pages. If provided, these are used before generated search URLs.

## `keyword` (type: `string`):

Job title, company, skill, or keyword to search for on Built In.

## `location` (type: `string`):

Optional Built In location slug, for example chicago, new-york, san-francisco, washington-dc, or leave empty for all remote jobs.

## `remotePreference` (type: `string`):

Choose the Built In work-location filter to use for generated search URLs.

## `category` (type: `string`):

Optional Built In category slug such as dev-engineering, data-analytics, sales, marketing, product, design-ux, cybersecurity-it, customer-success, finance, hr, operations, legal, or project-management.

## `postedWithinDays` (type: `integer`):

Optional recency filter supported by Built In. Use 1, 3, 7, 14, or 30 for recent jobs.

## `maxItems` (type: `integer`):

Maximum number of job listings to save. Keep the prefill low for a quick first run.

## `includeDetails` (type: `boolean`):

Fetch each job detail page to enrich results with full description and posted date. Turn off for faster listing-only monitoring.

## `resumeFromStartIndex` (type: `integer`):

Optional 0-based start-URL number to resume after an interrupted run. Leave empty for a new run.

## `resumeFromPage` (type: `integer`):

Optional 1-based page number for the resumed source. Leave empty for page 1.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://builtin.com/jobs/remote"
    }
  ],
  "keyword": "python",
  "remotePreference": "remote-or-hybrid",
  "category": "dev-engineering",
  "postedWithinDays": 7,
  "maxItems": 20,
  "includeDetails": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://builtin.com/jobs/remote"
        }
    ],
    "keyword": "python",
    "category": "dev-engineering",
    "postedWithinDays": 7,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/builtin-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://builtin.com/jobs/remote" }],
    "keyword": "python",
    "category": "dev-engineering",
    "postedWithinDays": 7,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/builtin-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://builtin.com/jobs/remote"
    }
  ],
  "keyword": "python",
  "category": "dev-engineering",
  "postedWithinDays": 7,
  "maxItems": 20
}' |
apify call fetch_cat/builtin-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/builtin-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3A6bv9mduBwTV3F9x/builds/KFPIUliTiyzraMb7f/openapi.json
