# Freshersworld Scraper (`solidcode/freshersworld-scraper`) Actor

\[💰 $1 / 1K] Extract entry-level and fresher job listings from Freshersworld, India's graduate jobs board. Search by keyword, city, qualification, experience, and job type — each result includes title, company, salary, location, experience, qualification, apply link, and description.

- **URL**: https://apify.com/solidcode/freshersworld-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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.
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

## Freshersworld Scraper

Pull entry-level and graduate job listings from Freshersworld at scale — full job descriptions, employment type, salary, eligible degrees, experience range, city, apply links, and featured/hot-job badges for every open fresher role in India. Built for recruiters, job-board aggregators, campus placement teams, and HR-tech researchers who need a clean, structured feed of India's fresher hiring market without opening thousands of listing pages by hand.

### Why This Scraper?

- **Complete job descriptions, not 59-character teasers** — every listing is opened and read in full. Descriptions average around 1,600 characters and run past 3,500: responsibilities, required skills, eligibility rules, and selection process. The board's own result cards cut off after roughly 59 characters.
- **Employment type resolved per job** — each row carries a classified type such as "Full Time", "Internship / Projects", or "Part Time", taken from the posting itself rather than guessed from the job title. Around 95% of rows — roughly 19 in 20 — ship it alongside the full description.
- **18 qualification filters** — BE / B.Tech, ME / M.Tech, MBA / PGDM, MCA, BCA, B.Sc, M.Sc, B.Com, M.Com, BA, MA, Diploma, ITI, B.Pharma, LLB, 12th Pass, 10th Pass, and Any Graduate. Target exactly the degree pool you hire from.
- **Four experience bands tuned for entry-level hiring** — Open to freshers, 0 - 1 years, 1 - 3 years, and 3+ years, matched against each posting's own stated experience range instead of a keyword guess.
- **Work-from-home and apprenticeship as first-class types** — five employment types (Full Time, Part Time, Internship, Apprenticeship, Work From Home) let you isolate remote fresher roles or apprenticeship intakes in a single run.
- **Blank search returns the entire board** — leave the keyword empty for the site-wide feed of roughly 33,000 live fresher listings, or add one city to pull just Bangalore, Mumbai, Delhi, Hyderabad, Chennai, or Pune.
- **Expired postings never leak into your data** — the board folds a closed "Archived Jobs" section into the same result pages. Those are excluded, so every row you pay for is a position that is still open.
- **Apply-ready rows** — a working apply link, the canonical job URL, an ISO-8601 posted date for freshness sorting, plus `isFeatured` and `isHotJob` badges that mirror the board's own paid-promotion slots.
- **Paste any board page and go** — search, category, city, and qualification pages are all accepted, several at a time, collected page by page with duplicates removed on job ID.

### Use Cases

**Recruitment & Talent Sourcing**

- Build a live shortlist of fresher openings in your city and degree bracket
- Track which employers are hiring 0–1 year candidates right now
- Isolate work-from-home and internship roles for remote-first hiring
- Feed apply links straight into your applicant tracking workflow

**Job Board & Aggregator Feeds**

- Syndicate India's fresher listings into your own job site
- Refresh a category feed daily with the newest postings only
- Keep listings accurate with canonical URLs and posted dates on every row
- Rebuild city and degree landing pages from structured rows instead of manual entry

**Campus Placement & Career Services**

- Match live openings to your graduating cohort's degrees (B.Tech, MBA, MCA, Diploma, ITI)
- Alert students to apprenticeship and internship intakes as they open
- Benchmark advertised salary ranges for your placement report
- Identify employers repeatedly recruiting from a specific qualification

**Labor Market & HR-Tech Research**

- Measure entry-level demand by city, degree, and employment type
- Track salary bands advertised to freshers over time
- Quantify the share of fresher roles offering work-from-home
- Analyse how experience requirements shift across sectors

**Competitive & Employer Intelligence**

- Watch which competitors are running featured and hot-job campaigns
- Monitor a rival's hiring volume and role mix week over week
- Spot new market entrants staffing up in a target city
- Compare your job descriptions against what competitors advertise

### Getting Started

#### Simple Keyword Search

```json
{
    "searchKeyword": "software developer",
    "maxResults": 100
}
```

#### Freshers in One City

```json
{
    "searchKeyword": "accountant",
    "location": "Bangalore",
    "experience": "fresher",
    "maxResults": 200
}
```

#### Remote Internships for Engineering Graduates

```json
{
    "searchKeyword": "",
    "jobTypes": ["internship", "work_from_home"],
    "qualifications": ["be_btech", "mca"],
    "maxResults": 500
}
```

#### Paste Freshersworld URLs

Drop in any search, category, city, or qualification page:

```json
{
    "startUrls": [
        "https://www.freshersworld.com/jobs/jobsearch/marketing-jobs",
        "https://www.freshersworld.com/jobs-in-hyderabad/305163"
    ],
    "maxResults": 300
}
```

#### Full-Featured Example

```json
{
    "searchKeyword": "data entry",
    "location": "Mumbai",
    "jobTypes": ["full_time", "part_time"],
    "experience": "0-1",
    "qualifications": ["any_graduate", "12th", "diploma"],
    "maxResults": 1000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchKeyword` | string | `"software developer"` | Word or phrase matched across job titles, skills, and companies. Leave blank to collect every job that passes the filters below. |
| `startUrls` | string\[] | `[]` | One or more Freshersworld search, category, city, or qualification pages. When provided, these are collected directly and the keyword plus all filters below are ignored. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `location` | string | `""` | Only keep jobs in this city (e.g. "Bangalore", "Mumbai", "Delhi", "Hyderabad", "Chennai"). Around 890 Indian cities are matched against Freshersworld's own city index, so the board is narrowed to that city before results are read. Both common spellings match ("Bangalore" also finds "Bengaluru"), and renamed cities are searched under both names, so "Gurgaon" also returns roles filed under "Gurugram". A state or region name instead of a city is checked posting by posting, which is slower. Blank covers all of India. |
| `jobTypes` | select\[] | `[]` | Employment types to keep: Full Time, Part Time, Internship, Apprenticeship, Work From Home. Empty keeps every type. Work From Home comes from Freshersworld's dedicated remote listing — a few dozen live jobs — so pairing it with a keyword narrows results sharply. |
| `experience` | select | `Any experience` | Experience level to keep: Any experience, Open to freshers, 0 - 1 years, 1 - 3 years, or 3+ years. Ranges overlap, so a "0 to 2 years" posting is returned for both freshers and 1 - 3 years. |
| `qualifications` | select\[] | `[]` | Degrees or courses the job must be open to: BE / B.Tech, ME / M.Tech, MBA / PGDM, MCA, BCA, B.Sc, M.Sc, B.Com, M.Com, BA, MA, Diploma, ITI, B.Pharma, LLB, 12th Pass, 10th Pass, Any Graduate. Seventeen of the eighteen are matched against Freshersworld's own degree index, so the board is narrowed before results are read; "Any Graduate" has no equivalent on the board and is checked posting by posting. Empty keeps every qualification. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Hard cap on how many jobs to collect. Set to `0` for no cap — a run then collects at most 50,000 results, and any single search is read to a maximum of 3,000 result pages. The run stops asking for new pages once the cap is reached but keeps the whole last page, so counts can overshoot slightly. |

### Output

One row per open job. Here is a representative result:

```json
{
    "jobId": "2922335",
    "title": "Software Engineer/Programmer Jobs Opening in Ocwen Financial Solutions Pvt Ltd at Bengaluru",
    "company": "Ocwen Financial Solutions Pvt Ltd",
    "companyLogo": "https://d2zxo3dbbqu73w.cloudfront.net/images/fw/jobs/1_185X185_FW_Default.png",
    "location": "Bangalore",
    "salary": "20000 - 40000 Monthly",
    "experience": "1 to 2 Years",
    "qualification": "Diploma, Any Post Graduate, Any Graduate",
    "jobType": "Full Time",
    "isFeatured": true,
    "isHotJob": false,
    "postedDate": "2026-06-01",
    "description": "We are looking for a Software Engineer / Programmer to join our Bengaluru technology team. Responsibilities include developing and maintaining backend services, writing clean and testable code, participating in code reviews, and collaborating with QA and product teams. Required skills: strong fundamentals in data structures, working knowledge of at least one modern programming language, and familiarity with relational databases. Eligibility: Diploma, Any Graduate or Any Post Graduate with 1 to 2 years of experience. Selection process: online assessment followed by two technical rounds and an HR discussion...",
    "applyLink": "https://www.freshersworld.com/jobs/software-engineerprogrammer-in-bengaluru-for-ocwen-financial-solutions-pvt-ltd-2922335",
    "url": "https://www.freshersworld.com/jobs/software-engineerprogrammer-in-bengaluru-for-ocwen-financial-solutions-pvt-ltd-2922335",
    "sourcePage": 1,
    "sourceOffset": 0,
    "sourceUrl": "https://www.freshersworld.com/jobs/jobsearch/software-jobs"
}
```

#### Job & Employer

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | Unique Freshersworld job identifier. Rows are deduplicated on this value. |
| `title` | string | Job title as advertised |
| `company` | string | Hiring company or employer name |
| `companyLogo` | string | Company logo image URL |
| `location` | string | City the role is based in |

#### Pay & Eligibility

| Field | Type | Description |
|-------|------|-------------|
| `salary` | string | Advertised pay, e.g. "20000 - 40000 Monthly". Often "Not disclosed". |
| `experience` | string | Experience range the employer asks for, e.g. "1 to 2 Years" |
| `qualification` | string | Degrees and courses eligible to apply, comma separated |
| `jobType` | string | Employment type, e.g. "Full Time", "Part Time", "Internship / Projects" |

#### Promotion & Timing

| Field | Type | Description |
|-------|------|-------------|
| `isFeatured` | boolean | True when the employer paid to feature the listing |
| `isHotJob` | boolean | True when the listing carries the board's hot-job badge |
| `postedDate` | string | ISO-8601 date (`2026-06-01`) when the posting states one, otherwise the board's relative wording (e.g. "6 days ago") |

#### Description & Links

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Full job description text — responsibilities, skills, eligibility, and selection process |
| `applyLink` | string | Direct apply link for the role |
| `url` | string | Canonical job page URL |

#### Source Tracking

| Field | Type | Description |
|-------|------|-------------|
| `sourcePage` | integer | Which result page this job came from |
| `sourceOffset` | integer | Position of this job within that page |
| `sourceUrl` | string | The search, category, or city page the row was collected from |

### Tips for Best Results

- **Start with 20–50 results** to confirm the fields match what you need, then scale the run up.
- **Results arrive in pages of 20** — a `maxResults` of 8 still returns the full 20-job page. Set the cap in multiples of 20 if you want an exact count.
- **Leave the keyword blank for maximum coverage** — the site-wide feed is roughly 33,000 live listings, so pair it with a city or a qualification instead of a keyword when you want breadth rather than a specific role.
- **Start URLs override everything else** — when you paste URLs, the keyword and all four filters are ignored. Use one or the other, not both.
- **Filters are deliberately lenient** — a posting whose eligibility or experience text can't be read cleanly is kept rather than dropped, so nothing is silently lost. For a strict shortlist, re-check the `qualification` and `experience` fields on the output rows.
- **Sort by `isFeatured` and `isHotJob` for urgency** — these are the slots employers pay extra for, so they are the strongest signal of who is actively trying to fill a role this week rather than collecting résumés.
- **For remote roles, run Work From Home on its own** — it draws from Freshersworld's dedicated remote-jobs listing, which is a few dozen live jobs rather than the full board. Adding a search keyword narrows that small list further and can leave you with a handful of rows, so pull the whole remote feed and filter the output yourself when you want breadth.
- **A run that lost pages says so** — any run whose completion message starts with "Completed with partial results" was cut short by the site, not by your settings. Re-running it usually picks up the rest.
- **If a keyword returns nothing, broaden it** — a few very specific search phrases are not served by the board itself. "software" beats "senior software developer II", and the filters will do the narrowing for you.

### Pricing

**From $1.00 per 1,000 results** — a transparent per-job price instead of an opaque usage bill. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.120 | $0.110 | $0.105 | $0.100 |
| 1,000 | $1.20 | $1.10 | $1.05 | $1.00 |
| 10,000 | $12.00 | $11.00 | $10.50 | $10.00 |
| 100,000 | $120.00 | $110.00 | $105.00 | $100.00 |

A "result" is one job row in the output dataset. **No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new listings
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available job listings for legitimate recruitment, market research, and career-services use. You are responsible for complying with applicable laws and Freshersworld's Terms of Service. Job postings may contain personal information about recruiters — handle it in line with applicable data protection rules, and never use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

## `searchKeyword` (type: `string`):

Word or phrase to search for across job titles, skills, and companies (e.g. 'software developer', 'data analyst', 'accountant'). Freshersworld searches in English, so a keyword needs letters or numbers — one made only of punctuation or of another script can't be searched and the run will say so instead of returning unrelated jobs. Leave blank to collect all jobs matching the filters below.

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

Paste one or more Freshersworld job search, category, city, or qualification pages (e.g. a 'jobs in Bangalore' or 'B.Tech jobs' listing page). When provided, these are scraped directly and the keyword/filters below are ignored. Links that aren't Freshersworld pages are reported in the log and skipped; if none of them can be used the run stops and tells you, rather than quietly searching for something else.

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

Only include jobs in this city (e.g. 'Bangalore', 'Mumbai', 'Delhi', 'Hyderabad', 'Chennai'). Freshersworld applies this filter on its own search for the ~890 cities it lists, so the results come back already narrowed to that city — by far the fastest way to run a city search. Both common spellings work ('Bangalore' also finds 'Bengaluru'), and cities that were renamed are searched under both names, so 'Gurgaon' also returns jobs filed under 'Gurugram'. Because the filter is Freshersworld's own, a job hiring in several cities is included whenever that city is one of them. A place Freshersworld doesn't list as a city — a state or region such as 'Karnataka', or a misspelling — is checked against each job as the results come in instead, which is slower: if 15 result pages in a row contain no matching jobs the run stops early and reports why. Leave blank for jobs across all of India.

## `jobTypes` (type: `array`):

Only include jobs of these employment types. Leave empty to include all types. Freshersworld applies this filter on its own search, so results are narrowed at the source — picking several types returns jobs matching any of them. Note on 'Work From Home': it comes from Freshersworld's own dedicated remote-jobs listing, which is much smaller than the main board (typically a few dozen live jobs) and cannot be narrowed by keyword at the source — so combining it with a search keyword filters that small list further and can return very few results. For the widest remote coverage, select Work From Home and leave the keyword blank. If 15 result pages in a row contain no matching jobs, the run stops early and reports why.

## `experience` (type: `string`):

Only include jobs matching this experience level. Freshersworld focuses on entry-level roles, so most jobs suit freshers. Ranges overlap on purpose — a job advertised as '0 to 2 years' is open to freshers and to candidates with 1-3 years, so it is returned for both. This is the one filter Freshersworld cannot apply on its own search without dropping jobs that genuinely match, so each job is checked as the results come in: if 15 result pages in a row contain no matching jobs, the run stops early and reports why.

## `qualifications` (type: `array`):

Only include jobs open to these degrees or courses. Leave empty to include all qualifications. Picking several returns jobs open to any of them. Freshersworld applies this filter on its own search, so results are narrowed at the source. Two cases are checked against each job as the results come in instead: 'Any Graduate', which Freshersworld has no ready-made filter for, and very large mixes of job types and qualifications chosen together. In those cases, if 15 result pages in a row contain no matching jobs, the run stops early and reports why — broaden the selection for more results.

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

Hard cap on the total number of job listings to collect. Default 100 — increase for bigger runs, or set to 0 for no cap. Two built-in limits still apply so a run can never grow unbounded: with no cap set, a run collects at most 50,000 results in total; and any single search is read to a maximum of 3,000 result pages (60,000 jobs). A run also has a time budget that grows with the number of results you ask for (at least 15 minutes, about 3 seconds per requested result, never more than 6 hours) — it only ever comes into play when a very narrow combination of filters matches too few jobs per page to finish. Whenever any of these limits is what ends a run, the completion message says so. The run stops requesting new pages once your number is reached but keeps the full last page even if it slightly overshoots.

## Actor input object example

```json
{
  "searchKeyword": "software developer",
  "startUrls": [],
  "jobTypes": [],
  "experience": "any",
  "qualifications": [],
  "maxResults": 100
}
```

# Actor output Schema

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

Table of jobs with the most useful fields — title, company, location, salary, experience, posting date, and apply link.

## `details` (type: `string`):

Full per-job rows including qualification, job type, badges, description, and source URL.

# 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 = {
    "searchKeyword": "software developer",
    "startUrls": [],
    "location": "",
    "jobTypes": [],
    "experience": "any",
    "qualifications": [],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/freshersworld-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 = {
    "searchKeyword": "software developer",
    "startUrls": [],
    "location": "",
    "jobTypes": [],
    "experience": "any",
    "qualifications": [],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/freshersworld-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 '{
  "searchKeyword": "software developer",
  "startUrls": [],
  "location": "",
  "jobTypes": [],
  "experience": "any",
  "qualifications": [],
  "maxResults": 100
}' |
apify call solidcode/freshersworld-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/2Mr38PxSBKfUN4MoD/builds/uxsBRsgnQkzAOFJYK/openapi.json
