# WayUp Scraper: US Intern & Entry-Level Jobs (`santamaria-automations/wayup-us-scraper`) Actor

Extract student, intern, and early-career jobs from WayUp.com. Returns title, company, logo, location (city/state/zip), salary, employment type (internship/full-time/part-time), workplace type (remote/hybrid/onsite), degree, industry, description, apply URL, posted date. Pay-per-result.

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

## Pricing

Pay per event

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/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

## WayUp Scraper: US Intern & Entry-Level Jobs

Extract student, intern, and early-career job listings from [WayUp.com](https://www.wayup.com), the US student-focused job board. Every row includes the fields you need to route a candidate straight to an application: title, company, salary, location, degree required, and a direct apply link.

### What it does

- Discovers listings via WayUp's public sitemap (~55,000 active US roles), or accepts a list of listing URLs you already have.
- Fetches each detail page over HTTP, no browser, no login.
- Parses WayUp's hydration payload for a complete field set that matches what a candidate sees on the site.
- Deduplicates and filters by keyword, location, and employment type (intern / full-time / part-time).
- Streams results to your Apify dataset as they land.

### Sample output

```json
{
  "_type": "job",
  "id": "38333957",
  "title": "Designer Intern 2027",
  "company_name": "IBM",
  "company_logo_url": "https://res.cloudinary.com/campus-job/image/upload/.../sample.jpg",
  "location": "Chicago, IL",
  "city": "Chicago",
  "state": "IL",
  "zip": "60611",
  "workplace_type": "hybrid",
  "is_paid": true,
  "employment_type": "internship",
  "employment_type_raw": "summer_internship",
  "experience_level": "student",
  "industry": "Technology",
  "major_preferred": "Computer Science",
  "posted_at": "2026-08-14",
  "status": "active",
  "job_url": "https://www.wayup.com/i-Technology-j-Designer-Intern-2027-IBM-997214368691144/",
  "application_url": "https://www.wayup.com/thirdpartyapply/38333957/redirect/",
  "source_platform": "wayup.com",
  "company_about": "IBM is a global technology and consulting company headquartered in Armonk, NY...",
  "company_phone": null,
  "company_email": null,
  "company_website": "https://www.ibm.com",
  "company_social_urls": {
    "linkedin": "https://www.linkedin.com/company/ibm",
    "twitter": "https://twitter.com/IBM",
    "facebook": "https://www.facebook.com/IBM",
    "instagram": "https://www.instagram.com/ibm",
    "youtube": "https://www.youtube.com/user/IBM",
    "tiktok": null,
    "website": "https://www.ibm.com"
  },
  "company_address_street": null,
  "company_address_city": null,
  "company_address_postcode": null,
  "company_address_country": "United States",
  "company_active_jobs_count": null,
  "company_active_jobs": []
}
```

### Pricing

| Event | Price |
|-------|-------|
| Actor start | $0.001 |
| Detail result (per job) | $0.005 |

Typical cost: **$5 per 1,000 jobs**. WayUp is a single-fetch scraper — every listing includes the full description, so there's no cheaper SERP-only mode. Runs on 128 MB memory; most searches finish in under a minute of compute time.

**New to Apify?** Every account gets a $5 free monthly platform credit, enough for around 1,000 jobs on this actor before you commit to paying anything. Test extensively first.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `startUrls` | array | WayUp URLs — see **Supported URL patterns** below. Skip this to auto-discover via sitemap. |
| `keywordFilter` | string | Match on the job title, case-insensitive. Example: `software engineer intern`. |
| `locationFilter` | string | Match on the city or state code. Example: `New York, NY` or `CA`. |
| `employmentTypeFilter` | string | `any`, `internship`, `entry_level`, `part_time`, or `campus_rep`. |
| `includeJobDetails` | boolean | Every row already includes PDP fields since WayUp is a single-fetch scraper. Kept for interface parity. |
| `maxResults` | integer | Total cap on jobs written to the dataset. Default 5. |
| `maxConcurrency` | integer | Concurrent detail fetches. Default 5, max 20. |

#### Supported URL patterns

You can paste any of these URL shapes into `startUrls`:

| Pattern | Example | What it returns |
|---------|---------|----------------|
| Job detail (PDP) | `https://www.wayup.com/i-Technology-j-Designer-Intern-2027-IBM-997214368691144/` | That single listing |
| Entry-level category | `https://www.wayup.com/s/entry-level-jobs/accounting/` | All entry-level accounting jobs on WayUp |
| Part-time category | `https://www.wayup.com/s/part-time-jobs/biology/` | All part-time biology jobs on WayUp |
| Campus / university | `https://www.wayup.com/s/campuses/harvard-university/` | All jobs tagged to that university |

Category and campus URLs are automatically expanded: the scraper fetches the list page and queues each individual job PDP, then applies `keywordFilter`, `locationFilter`, `employmentTypeFilter`, and `maxResults` as normal.

### Output fields

**Identifiers**

- `id`, `title`, `job_url`, `application_url`, `application_method`, `source_platform`, `scraped_at`, `status`

**Company**

- `company_name`, `company_logo_url`, `industry`, `company_industry_slug`, `diversity_priority_flag`

**Employer profile (always populated when the PDP JSON company block provides it)**

- `company_about`: Company description from the PDP JSON company block
- `company_website`: Company website URL
- `company_address_country`: Default "United States" for WayUp listings
- `company_social_urls`: LinkedIn / Facebook / X / Instagram / YouTube / TikTok URLs of the hiring company, extracted from the PDP body (WayUp platform-owned social links are filtered out)
- `company_address_country`: Always "United States"
- `company_phone`, `company_email`, `company_address_street/city/postcode`: Usually null (WayUp does not publish these)
- `company_active_jobs_count`, `company_active_jobs`: Usually null (WayUp does not embed a per-company job list in the PDP payload)
- `company_social_urls`: `{linkedin, twitter, facebook, instagram, youtube, tiktok, website}` object. Populated per employer from the PDP JSON company block. WayUp's own platform-owned handles are filtered out; only true employer channels appear here.

**Location**

- `location`, `city`, `state`, `zip`, `is_remote`, `is_national`, `workplace_type`

**Compensation**

- `salary_min`, `salary_max`, `salary_currency`, `salary_period`, `salary_text`

**Role type**

- `employment_type`, `employment_type_raw`, `experience_level`, `is_paid` (boolean: false on unpaid internships)

**Requirements**

- `degree_required`, `major_preferred`, `gpa_min`, `sponsors_visa`

**Content**

- `description` (markdown), `description_html`, `posted_at`, `closing_at`

### Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

**Apify MCP server URL:**

`https://mcp.apify.com?tools=santamaria-automations/wayup-us-scraper`

**Example prompt once connected:**

> "Use `wayup-us-scraper` to find 20 software engineer internships in New York, NY. Return as a table with title, company, location, and apply URL."

Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically.

### Why this scraper

- **Coverage**: pulls from WayUp's own sitemap so you see the same listings a candidate sees on the site, including distributed job partners.
- **Student-specific fields**: degree required, GPA minimum, preferred major, visa sponsorship, campus-rep roles. Generic job scrapers drop all of these.
- **Salary parsing**: two-pass extractor. Prefers Google-for-Jobs structured data, falls back to the free-text compensation block, then to a regex sweep of the body. Real ranges land in `salary_min` / `salary_max`, not just a text blob.
- **Company logos**: WayUp CDN URLs work as-is for enrichment pipelines.
- **HTTP-only**: no browser, no CAPTCHA overhead. Runs at 128 MB.

### Common use cases

- **Campus recruiting**: pull all internships in a target metro, cross-reference against your ATS, hand off warm leads to the recruiter team.
- **University career services**: build a real-time board of active roles for a specific major.
- **Job aggregation**: feed WayUp roles into a private job board or newsletter for students.
- **Salary benchmarking**: extract compensation ranges across intern and entry-level roles by industry.

### Notes and limits

- Employer data (`company_about`, `company_website`, `company_social_urls`) is aggregated from the PDP JSON payload — no additional HTTP requests, no separate charge event.
- WayUp is US-only. Non-US locations return zero results.
- `salary_min`/`salary_max` may be null on listings where the employer did not disclose compensation. `salary_text` is null when WayUp does not expose a dedicated salary value (the platform embeds compensation inconsistently, so we prefer null over publishing description snippets as salary).
- `gpa_min`, `sponsors_visa`, and `degree_required` are populated when WayUp exposes them as structured application questions. Employers vary in what they declare.
- Sitemap discovery is filtered by URL substring, which covers title and city terms baked into the slug. For exact-phrase matching on descriptions, run detail-only mode with a curated `startUrls` list.
- `application_url` is a WayUp redirect that hops to the employer's ATS. Follow the redirect to reach the raw apply page.

### Related Actors

- [Job Feed](https://apify.com/santamaria-automations/job-feed): one normalized, deduplicated job feed across 50+ international job boards. Orchestrates the NanoScrape fleet.
- [Workatastartup Scraper](https://apify.com/santamaria-automations/workatastartup-scraper): US tech startup jobs from Y Combinator's job board.
- [Levels.fyi Scraper](https://apify.com/santamaria-automations/levels-fyi-scraper): FAANG-tier US tech salaries and job listings.
- [Rigzone US Scraper](https://apify.com/santamaria-automations/rigzone-us-scraper): US oil, gas, and energy jobs.
- [Indeed Scraper](https://apify.com/santamaria-automations/indeed-scraper): the largest US and global job board aggregator.
- [Career Site Jobs Scraper](https://apify.com/santamaria-automations/career-site-jobs-scraper): scrape jobs directly from company career pages (Greenhouse, Lever, Workday, etc.).
- [Website Job Extractor](https://apify.com/santamaria-automations/website-job-extractor): extract job listings from any website via HTML pattern detection.
- [Website Email Scraper](https://apify.com/santamaria-automations/website-email-scraper): pair with any job scraper to reach hiring companies directly.

### Support

Found a bug or have a feature request? Open an issue in the [Issues tab](https://apify.com/santamaria-automations/wayup-us-scraper/issues) or email `contact@nanoscrape.com`. We typically reply within 6 hours during EU business days.

# Actor input Schema

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

Paste one or more WayUp URLs. Supported patterns:
• Job detail page — https://www.wayup.com/i-{Industry}-j-{Title}-{Company}-{ID}/
• Entry-level category — https://www.wayup.com/s/entry-level-jobs/{category}/ (e.g. /s/entry-level-jobs/accounting/)
• Part-time category — https://www.wayup.com/s/part-time-jobs/{category}/ (e.g. /s/part-time-jobs/biology/)
• Campus / university page — https://www.wayup.com/s/campuses/{university-slug}/ (e.g. /s/campuses/harvard-university/)
Leave empty to auto-discover jobs via the sitemap.

## `keywordFilter` (type: `string`):

Only keep jobs whose title contains this text. Case-insensitive. Applied client-side to sitemap results. Example: 'software engineer intern', 'marketing', 'data'.

## `locationFilter` (type: `string`):

Only keep jobs whose location matches this text (city name or state code). Case-insensitive. Applied client-side to sitemap results. Example: 'New York, NY', 'Chicago', 'CA'.

## `employmentTypeFilter` (type: `string`):

Only keep jobs of this employment type. Applied to WayUp's own jobListingType field.

## `includeJobDetails` (type: `boolean`):

Fetch each job's detail page for the full description, structured salary, employment type, closing date, and any additional PDP-only fields. Otherwise only SERP-visible fields are returned.

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

Maximum number of jobs to scrape and charge for.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent detail-page fetches. Higher = faster but more likely to hit rate limits.

## Actor input object example

```json
{
  "keywordFilter": "software engineer intern",
  "locationFilter": "New York, NY",
  "employmentTypeFilter": "any",
  "includeJobDetails": false,
  "maxResults": 5,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `jobListings` (type: `string`):

Dataset containing scraped WayUp job listings. Each record includes: id, title, company\_name, company\_logo\_url, location (city/state/zip/remote/national), salary (min/max/currency/period/text), employment\_type, workplace\_type, experience\_level, degree\_required, industry, description, application\_url, posted\_at.

# 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 = {
    "employmentTypeFilter": "any",
    "maxResults": 5,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("santamaria-automations/wayup-us-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 = {
    "employmentTypeFilter": "any",
    "maxResults": 5,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("santamaria-automations/wayup-us-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 '{
  "employmentTypeFilter": "any",
  "maxResults": 5,
  "maxConcurrency": 5
}' |
apify call santamaria-automations/wayup-us-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,santamaria-automations/wayup-us-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/j6GmzLpsEw84A3Iqs/builds/87HURGxwIfVeq6ZLJ/openapi.json
