# The Muse Jobs Scraper (`parseforge/themuse-jobs-scraper`) Actor

Scrapes job listings from The Muse filtered by job function, experience level, city, and company name. Returns each posting as a flat row with title, company, location, date, and full description.

- **URL**: https://apify.com/parseforge/themuse-jobs-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Business, Other
- **Stats:** 1 total users, 0 monthly users, 90.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 result items

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/actors/running/actors-in-store.md#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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### The Muse Jobs Scraper

**Scrape job listings from The Muse by category, level, location, or company, up to a million per run.** Each listing includes the job title, company, location, posting date, and full description. No login or API key required. Export to CSV, JSON, Excel, or XML.

The Muse job board features detailed company profiles and curated job listings, but manually browsing categories and copying postings is slow. This Actor reads the public job feeds directly, filtering by job function, experience level, city, or a specific company name, and returns each match in one consistent schema.

| Who uses it | What they scrape The Muse for |
|---|---|
| Recruiters | Monitor which companies in a sector are hiring for specific roles this week. |
| Job seekers | Build a personal feed of new openings that match an exact job title and city. |
| Market analysts | Track hiring volume by job function and seniority across different regions. |
| Sales teams | Identify growing companies through their active job postings for outreach. |

### What it does

This Actor collects job listings from The Muse based on your chosen category, level, location, and company filters, and returns each one as a flat row.

- 🏷️ **Category filter:** narrow results to one job function, such as Software Engineering, Design and UX, or Sales.
- 📊 **Experience level filter:** target Internship, Entry Level, Mid Level, or Senior Level roles.
- 📍 **Location targeting:** supply a city and state or 'Remote' to see only jobs in that area.
- 🏢 **Company search:** limit listings to a single employer by its display name, like 'SpaceX' or 'Bank of America'.
- 📦 **Bulk collection:** set a high maxItems value to pull thousands of listings in one run for trend analysis.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with The Muse data

**📈 Track hiring trends by function.**

A market analyst scrapes all Software Engineering and Data and Analytics listings weekly to measure demand for technical roles across the US.

**🎯 Build a targeted job alert feed.**

A job seeker runs the Actor daily with a location set to 'Denver, CO' and a category of 'Product Management' to catch every new relevant posting.

**🏢 Research a company's growth.**

A salesperson scrapes all open roles at a target account like 'Audible, Inc.' to understand which departments are expanding before outreach.

**🌍 Map remote work availability.**

An HR consultant collects all listings with the location set to 'Remote' and filters by 'Senior Level' to report on executive remote hiring patterns.

### Why choose this scraper

|  | What you get |
|---|---|
| **Job title and company** | The core identifiers for every listing. |
| **Location and posting date** | Where the job is and how recently it was published. |
| **Full description** | The complete body text of the job posting. |
| **Category and level** | The job function and seniority as classified by The Muse. |

### How it compares

No other Store actor targets The Muse the same way, so the honest comparison is with the alternatives teams actually weigh.

| | The Muse Jobs Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When The Muse changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor with a job category, experience level, location, and company name, alone or together, and filters run as each listing is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.016 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $16.00 |
| 10,000 results | $160.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [The Muse Jobs Scraper](https://apify.com/parseforge/themuse-jobs-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to The Muse through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/themuse-jobs-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your filters are not too restrictive. Try clearing the company name or location field first, then broaden the category and level selections. Also verify the company name matches the exact display name used on The Muse.

**The Actor returns fewer listings than I expected.**

The Muse only shows currently active job postings. If a company has few open roles or your location is very specific, the result count will reflect that. Remove optional filters to widen the search.

**My company name filter is not working.**

Enter the company name exactly as it appears in a The Muse job listing. Try a partial name or check the site directly to confirm the correct display name, then rerun the Actor.

**The run timed out before reaching my maxItems.**

The Actor may time out on very large requests. Lower the maxItems value or add more restrictive filters to reduce the number of pages that need to be visited.

### FAQ

| Question | Answer |
|---|---|
| Can I scrape all job listings from The Muse without any filters? | Yes. Leave the category, level, location, and company fields blank and set a high maxItems number to collect every available listing across the entire site. |
| How do I filter for remote jobs only? | Type 'Remote' into the City or location input field. The Actor will return only listings tagged as remote by the employer. |
| What company name format should I use? | Use the company's display name as it appears on The Muse, for example 'SpaceX', 'Bank of America', or 'Audible, Inc.'. The filter matches the exact string. |
| Does this Actor require a login or an API key? | No. It reads the publicly available job listing pages directly, so you do not need a The Muse account or any credentials. |
| Can I combine multiple filters in one run? | Yes. You can set a category, a level, a location, and a company name all at once. Only listings that match every active filter will be returned. |
| What data fields does each job listing row contain? | Each row includes the job title, company name, location, posting date, job function category, experience level, and the full text of the job description. |
| How many job listings can I collect in a single run? | You can set the maxItems value up to 1,000,000. The Actor will stop when it reaches that count or when no more matching listings are available. |
| In what formats can I export the scraped data? | You can export your dataset in CSV, JSON, Excel, or XML format directly from the Apify platform after the run completes. |
| Can I schedule this Actor to run automatically? | Yes. Use Apify's built-in scheduler to run the Actor daily, weekly, or on any custom cron schedule to track new job postings over time. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by The Muse. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

How many job listings to collect per run.

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

Job function category. Leave blank for all categories.

## `level` (type: `string`):

Career level filter.

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

City and state or country, e.g. 'New York, NY', 'San Francisco, CA', 'Remote'. Leave blank for all locations.

## `company` (type: `string`):

Optional company name to limit results. Use the company's display name, e.g. 'SpaceX', 'Bank of America', 'Audible, Inc.'.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/themuse-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 = { "maxItems": 10 }

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

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/themuse-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/themuse-jobs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Cg9T2BxsVjrteepyd/builds/cTT1D2jsarD4jNsDh/openapi.json
