# BuiltIn Jobs Scraper - Tech Hiring Data (`benthepythondev/builtin-jobs-scraper`) Actor

Scrape BuiltIn job listings: title, company, location, remote/hybrid flag, salary range, seniority, industry tags and direct job URL. Search by keyword or BuiltIn URL.

- **URL**: https://apify.com/benthepythondev/builtin-jobs-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## BuiltIn Jobs Scraper - Tech Hiring Data

Scrape job listings from **BuiltIn**, one of the best-known tech job boards for startups, software companies and digital employers. Get job title, hiring company, company profile URL, location, remote/hybrid flag, salary range, seniority and the direct BuiltIn job URL. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### What is the BuiltIn Jobs Scraper?

BuiltIn is a strong source for technology hiring signals. Companies use it to promote engineering, product, design, data, sales, marketing and operations roles, often with salary ranges and remote/hybrid work details. This actor turns BuiltIn search pages into structured data that can be used for recruiting, job aggregation, salary research, market intelligence and lead generation.

Paste a BuiltIn search URL, or enter a keyword such as `python`, `data engineer`, `product manager`, `sales`, `designer` or `devops`. The actor fetches the public search-result pages over plain HTTP and parses the server-rendered job cards. It does not require a BuiltIn account, browser automation, proxies or an API key, which keeps runs fast and inexpensive.

### What data does it extract?

- **Job title**
- **Hiring company**
- **Company profile URL**
- **Location** or multi-location marker
- **Remote / hybrid / onsite work type**
- **Posted date** as shown by BuiltIn
- **Seniority level**
- **Salary min, max and currency** where shown
- **Company profile URL** for hiring-company enrichment
- **Direct BuiltIn job URL**
- **Stable job ID** parsed from the URL

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchUrls` | array | BuiltIn search URLs to scrape exactly. |
| `keyword` | string | Optional keyword or role used when no URLs are supplied. |
| `location` | string | Optional location filter for keyword searches. |
| `remoteOnly` | boolean | Request BuiltIn's remote filter for keyword searches. |
| `maxResults` | integer | Maximum jobs to return per search. |

### Example input

```json
{
  "keyword": "python",
  "remoteOnly": false,
  "maxResults": 50
}
````

You can also paste a filtered BuiltIn URL:

```json
{
  "searchUrls": ["https://builtin.com/jobs/dev-engineering/python"],
  "maxResults": 100
}
```

### Output

Each item is one job listing:

```json
{
  "job_id": "10044396",
  "title": "Senior Lead Software Engineer, Fullstack (Typescript/Nodejs/Python)",
  "company": "Capital One",
  "company_url": "https://builtin.com/company/capital-one",
  "location": "3 Locations",
  "work_type": "Hybrid",
  "is_remote": false,
  "posted": "4 Hours Ago",
  "seniority": "Senior level",
  "salary_min": 209000,
  "salary_max": 262000,
  "salary_currency": "USD",
  "url": "https://builtin.com/job/senior-lead-software-engineer-fullstack-typescript-nodejs-python/10044396",
  "search": "https://builtin.com/jobs/dev-engineering/python"
}
```

### Use cases

- **Recruitment lead generation** - find tech companies actively hiring for a role, language or function.
- **Salary research** - collect salary bands for engineering, product, data and business roles where BuiltIn publishes compensation.
- **Remote-work tracking** - monitor remote, hybrid and onsite availability across tech job categories.
- **Job-board aggregation** - add BuiltIn listings to your own job feed or internal talent dashboard.
- **Market intelligence** - track which companies are expanding engineering, AI, product, sales or operations teams.
- **Sales prospecting** - hiring is a strong buying signal for tools, services, recruiting help and infrastructure vendors.

### Workflow and data quality

For best results, build your search on BuiltIn first, then paste the filtered URL into `searchUrls`. This preserves BuiltIn's own filters and gives the actor a precise target. For monitoring, create one Apify task per segment, such as `python`, `data engineer`, `remote product manager` or `cybersecurity`, and schedule the task daily.

Use `job_id` or `url` as the deduplication key. Keep the `search` field in your database so you know which segment produced each record. BuiltIn can show multi-location jobs as "2 Locations" or "3 Locations"; preserve that value and open the returned URL if you need the complete location list. Salary fields are returned only when the listing card exposes salary on the search page.

The scraper reads server-rendered job cards, not screenshots. Missing fields are returned as null rather than guessed. It de-duplicates across pages and stops when a page has no new jobs.

### FAQ

**Do I need a BuiltIn account?** No. The actor reads public search-result pages.

**Does it use a browser?** No. It uses plain HTTP and parses the HTML job cards, which keeps it fast and reliable.

**Can I scrape remote jobs?** Yes. Use BuiltIn's filters and paste the resulting URL, or enable `remoteOnly` for keyword searches.

**Does it include salary?** Yes, when BuiltIn displays a salary range on the job card. Otherwise salary fields are null.

**Can it paginate?** Yes. The actor adds BuiltIn's `page` parameter until it reaches `maxResults` or no new jobs are found.

**Can I filter by company or location?** Use BuiltIn's own filters in the browser and paste the final URL into `searchUrls`.

**How fresh is the data?** It is fetched live from BuiltIn when the actor runs.

**Can I export the output?** Yes. Apify supports JSON, CSV, Excel, API access, webhooks and integrations.

**Is this useful for lead generation?** Yes. The output includes companies that are actively hiring, which is a strong commercial intent signal.

**Is it legal?** The actor collects publicly available job-listing information. You are responsible for using the data in line with BuiltIn's terms and applicable laws.

### You might also like

- [HiringCafe Scraper](https://apify.com/benthepythondev/hiring-cafe-scraper) - rich job and company data.
- [StepStone Scraper](https://apify.com/benthepythondev/stepstone-scraper) - European jobs and hiring-company data.
- [The Muse Jobs Scraper](https://apify.com/benthepythondev/themuse-jobs-scraper) - jobs by category, level and location.
- [Website Contact Extractor](https://apify.com/benthepythondev/website-contact-extractor) - enrich hiring companies with emails and phone numbers.

**Keywords:** BuiltIn scraper, BuiltIn jobs scraper, BuiltIn API, scrape BuiltIn jobs, tech jobs data, startup jobs scraper, remote tech jobs, salary data scraper, recruiting leads, hiring company data, software engineering jobs, product manager jobs, job board scraper, BuiltIn job listings, tech hiring intelligence, Apify jobs.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste BuiltIn job search URLs to scrape exactly. Filter on BuiltIn, then copy the URL.

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

Optional role or keyword, e.g. python, data engineer, product manager.

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

Optional BuiltIn location filter. You can also paste a fully filtered URL instead.

## `remoteOnly` (type: `boolean`):

When using keyword search, request BuiltIn's remote filter.

## `maxResults` (type: `integer`):

Maximum jobs to return per search URL/keyword.

## Actor input object example

```json
{
  "searchUrls": [
    "https://builtin.com/jobs/dev-engineering/python"
  ],
  "keyword": "python",
  "remoteOnly": false,
  "maxResults": 25
}
```

# 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 = {
    "searchUrls": [
        "https://builtin.com/jobs/dev-engineering/python"
    ],
    "keyword": "python",
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/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 = {
    "searchUrls": ["https://builtin.com/jobs/dev-engineering/python"],
    "keyword": "python",
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/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 '{
  "searchUrls": [
    "https://builtin.com/jobs/dev-engineering/python"
  ],
  "keyword": "python",
  "maxResults": 25
}' |
apify call benthepythondev/builtin-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BuiltIn Jobs Scraper - Tech Hiring Data",
        "description": "Scrape BuiltIn job listings: title, company, location, remote/hybrid flag, salary range, seniority, industry tags and direct job URL. Search by keyword or BuiltIn URL.",
        "version": "1.0",
        "x-build-id": "Z0KMTNGu5y9IOrdC0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~builtin-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-builtin-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~builtin-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-builtin-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~builtin-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-builtin-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "BuiltIn search URLs",
                        "type": "array",
                        "description": "Paste BuiltIn job search URLs to scrape exactly. Filter on BuiltIn, then copy the URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword / role",
                        "type": "string",
                        "description": "Optional role or keyword, e.g. python, data engineer, product manager."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional BuiltIn location filter. You can also paste a fully filtered URL instead."
                    },
                    "remoteOnly": {
                        "title": "Remote only",
                        "type": "boolean",
                        "description": "When using keyword search, request BuiltIn's remote filter.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum jobs to return per search URL/keyword.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
