# eFinancialCareers Scraper 💰$0.90/1K | Salary | 23 Countries (`ahmed_jasarevic/efinancialcareers-scraper`) Actor

Get eFinancialCareers jobs data without an official API. Scrape banking, finance & fintech job listings with companies, salary bands, contract types and full descriptions across 23 countries. From $0.90 per 1,000 results.

- **URL**: https://apify.com/ahmed\_jasarevic/efinancialcareers-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.87 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## eFinancialCareers Scraper - Finance Jobs API for Banking, Fintech & Salary Data

Extract **70,000+ finance and banking job listings** from [eFinancialCareers](https://www.efinancialcareers.com) - the leading job board for banking, capital markets, fintech, asset management, and quant finance - through the site's own public JSON search API. No browser, no login, no proxy: get job titles, hiring companies, salary bands, contract types, full descriptions, and apply URLs across **23 countries** for finance job market research, salary benchmarking, and recruitment intelligence.

### Main Use Cases

- **Banking & finance job market research** - track hiring trends across investment banking, hedge funds, asset management, and fintech
- **Salary benchmarking datasets** - build compensation datasets from published `minSalary` / `maxSalary` / `salaryCurrency` fields
- **Recruitment & talent intelligence** - monitor which firms are hiring, in which desks, region by region
- **Finance job board & newsletter building** - power a niche jobs site, ATS, or job feed with clean structured data
- **Competitor & employer analysis** - see which banks, funds, and fintechs are expanding or contracting headcount
- **Lead generation for recruitment agencies** - map active hiring mandates and the employers behind them

### Get eFinancialCareers Job Data Without an Official API

eFinancialCareers only exposes a recruiter-facing job-posting API (XML, for posting jobs you own). There is **no public API for extracting job listing data** - this Actor is the practical alternative. It wraps the site's own open JSON search endpoint (`job-search-api.efinancialcareers.com/v1/efc/jobs/search`) and returns clean, structured records you can download as JSON, CSV, Excel, or HTML - or pull programmatically via the Apify API into your own systems.

### How the Finance Jobs API Scraper Works

The Actor queries the same **internal JSON search API** that renders results on the eFinancialCareers website - the endpoint was reverse-engineered from the site's micro-frontend architecture. No browser automation, no HTML scraping, and no login required. Each API call returns up to 100 structured job records **with the full job description already included**, so there is no second detail-page request per job. Runs are pure HTTP on 256 MB memory - fast and cheap.

### Extract Banking & Finance Jobs Across 23 Countries

One input field switches the entire dataset to a different market:

| `countryCode2` | Market | Key financial centers |
|---|---|---|
| `GB` | United Kingdom | London, Edinburgh, Manchester |
| `US` | United States | New York, Chicago, Boston, San Francisco |
| `SG` | Singapore | Singapore |
| `HK` | Hong Kong | Hong Kong |
| `DE` | Germany | Frankfurt, Munich, Berlin |
| `FR` | France | Paris, Lyon |
| `CH` | Switzerland | Zurich, Geneva |
| `AE` / `SA` | UAE / Saudi Arabia | Dubai, Riyadh |
| `JP` / `CN` | Japan / China | Tokyo, Shanghai |
| `AU` / `IE` / `LU` / `NL` / `SE` / `NO` / `DK` / `FI` / `IT` / `ES` / `ZA` / `MY` | 12 more markets | Sydney, Dublin, Luxembourg, Amsterdam, Stockholm, Oslo, Copenhagen, Helsinki, Milan, Madrid, Johannesburg, Kuala Lumpur |

### Get Structured Finance Salary Data for Compensation Benchmarking

When an employer publishes a pay range, each record carries the raw salary text plus structured, sortable fields:

- `salary` - the raw salary string (e.g. `"Competitive"` or `"£80k - £120k"`)
- `minSalary` / `maxSalary` - numeric band when disclosed
- `salaryCurrency` - GBP, USD, EUR, SGD, CHF, AUD, and more

This makes eFinancialCareers data suitable for **finance salary benchmarking**, pay-transparency research, and compensation trend reports over time - including comparing equivalent roles across London, New York, Singapore, and Dubai markets.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `searchQuery` | string | No | `analyst` | Keyword to search for (e.g. `analyst`, `trader`, `risk`, `quant`, `compliance`, `private equity`) |
| `countryCode2` | string | No | `GB` | Two-letter ISO country code from the 23 supported markets |
| `maxResults` | integer | No | `100` | Maximum job records to return (`1` - `10,000`) |
| `location` | string | No | `""` | Optional free-text location filter applied server-side (e.g. `London`, `New York`) |
| `proxy` | object | No | `{ "useApifyProxy": false }` | Not needed - the search API is openly accessible from any IP |

### Output - Dataset Fields

Each job is one dataset record:

| Field | Description |
|---|---|
| `jobId` | eFinancialCareers numeric job ID |
| `hashId` | Internal API hash ID |
| `title` | Job posting title |
| `company` / `fullCompanyName` | Hiring company name(s) |
| `location` / `city` / `state` / `country` / `region` | Parsed location components |
| `salary` / `minSalary` / `maxSalary` / `salaryCurrency` | Salary text + structured band (when published) |
| `contractType` | Permanent / Contract / etc. |
| `employmentType` | Full time / Part time |
| `workArrangement` | Remote / Hybrid / Office |
| `postedDate` / `closingDate` | ISO 8601 posting and expiry dates |
| `description` / `summary` | Full job description + AI-generated summary |
| `sectors` | Sector classification tags (e.g. `INVESTMENT_BANKING`, `ASSET_MANAGEMENT`, `INFORMATION_TECHNOLOGY`) |
| `language` | Posting language (EN, FR, DE, etc.) |
| `isExternalApplication` | Whether apply goes to an external ATS |
| `applyUrl` / `jobUrl` | Direct links to the job posting |
| `clientBrandName` / `fullNormalizedJobTitle` | Recruiter brand + normalized title (when available) |
| `scrapedAt` | Collection timestamp |

### Example Input

```json
{
  "searchQuery": "quant analyst",
  "countryCode2": "GB",
  "location": "London",
  "maxResults": 500
}
```

### Example Output

```json
{
  "jobId": "24775091",
  "hashId": "ROVBevio8WSx0NNy",
  "title": "Quantitative Analyst",
  "company": "Lendable Ltd",
  "fullCompanyName": "ASPEN - Lendable Ltd",
  "location": "London, United Kingdom",
  "city": "London",
  "state": "England",
  "country": "United Kingdom",
  "region": "Europe",
  "salary": "£90,000 - £110,000",
  "minSalary": "90000",
  "maxSalary": "110000",
  "salaryCurrency": "GBP",
  "contractType": "Permanent",
  "employmentType": "Full time",
  "workArrangement": "Hybrid",
  "postedDate": "2026-09-13T08:54:49.670Z",
  "closingDate": "2026-10-13T08:54:49.670Z",
  "description": "About Lendable Lendable is on a mission to build the world's best technology...",
  "summary": "Quantitative analyst role at a London fintech lender...",
  "sectors": ["INFORMATION_TECHNOLOGY/OTHER"],
  "language": "EN",
  "isExternalApplication": false,
  "applyUrl": "https://www.efinancialcareers.com/jobs-United_Kingdom-London-Analyst.id24775091",
  "jobUrl": "https://www.efinancialcareers.com/jobs-United_Kingdom-London-Analyst.id24775091",
  "scrapedAt": "2026-09-15T07:30:00.000Z"
}
```

### Integrations & Automation

- **Apify API** - start runs and pull the dataset from any application (REST, JavaScript, or Python client)
- **Webhooks** - get notified (Slack, email, custom endpoint) the moment a run finishes
- **Apify integrations** - Zapier, Make, Google Sheets, n8n, and more to move finance job data into your tools
- **Scheduling** - schedule in the Apify Console to keep data fresh

Recommended cadence: **daily** for job-market monitoring and candidate feeds, **weekly** for salary benchmarking and hiring-trend datasets.

### Related Actors

Also useful in the finance-recruitment and job-data space:

- [shahidirfan/efinancialcareers-jobs-scraper](https://apify.com/shahidirfan/efinancialcareers-jobs-scraper) - the most-used eFinancialCareers actor on the store
- [easyapi/efinancialcareers-jobs-scraper](https://apify.com/easyapi/efinancialcareers-jobs-scraper) - high-traffic eFinancialCareers job listings extraction
- [ahmed\_jasarevic/wellfound-scraper](https://apify.com/ahmed_jasarevic/wellfound-scraper) - startup jobs, salary & equity data
- [ahmed\_jasarevic/indeed-job-scraper](https://apify.com/ahmed_jasarevic/indeed-job-scraper) - salary, jobs, company data from Indeed
- [ahmed\_jasarevic/glassdoor-scraper](https://apify.com/ahmed_jasarevic/glassdoor-scraper) - reviews, jobs, salaries & interview data

### FAQ

#### Does eFinancialCareers have a public API?

Not for extracting job data. eFinancialCareers operates a recruiter-only job-posting API (XML-based, API-key authentication, `core.ws.efinancialcareers.com`) used by recruiters to post and manage their own vacancies. There is no public read API for listings - which is exactly why this Actor calls the site's own open JSON search endpoint (`job-search-api.efinancialcareers.com`) directly, with no authentication.

#### Why use this Actor instead of the official API?

Because there is no official data-extraction API to use. The recruiter API requires an API key, an approved recruiter account, and authentication - and it only manages jobs you posted. This Actor reads the same public JSON search API the website itself uses: no API key, no rate-limit account, no approval process, plus structured output, pagination, retries, and dataset delivery on top.

#### How do I scrape eFinancialCareers?

1. Open the Actor and go to the **Input** tab.
2. Enter a **Search Query** (e.g. `analyst`, `trader`, `quant`, `private equity`).
3. Pick a **Country Code** (`GB`, `US`, `DE`, `SG`, `HK`, `AE`, ...).
4. Set **Max Results** and optionally a **Location Filter** (e.g. `London`, `New York`).
5. Click **Start**. When the run finishes, download the dataset as JSON, CSV, Excel, or HTML.

#### What are alternatives to this Actor / where else can I get finance job data?

Within the same niche: [Shahid Irfan's eFinancialCareers actor](https://apify.com/shahidirfan/efinancialcareers-jobs-scraper), [EasyApi's eFinancialCareers actor](https://apify.com/easyapi/efinancialcareers-jobs-scraper), [Black Falcon Data's eFinancialCareers actor](https://apify.com/blackfalcondata/efinancialcareers-scraper), and [Unfenced Group's eFinancialCareers actor](https://apify.com/unfenced-group/efinancialcareers-scraper). For adjacent job-board data, the same creator offers [Wellfound](https://apify.com/ahmed_jasarevic/wellfound-scraper), [Indeed](https://apify.com/ahmed_jasarevic/indeed-job-scraper), [Reed.co.uk](https://apify.com/ahmed_jasarevic/reed-co-uk-job-scraper), [StepStone](https://apify.com/ahmed_jasarevic/stepstone-job-scraper), [SEEK](https://apify.com/ahmed_jasarevic/seek-job-scraper), and [Naukri.com](https://apify.com/ahmed_jasarevic/naukri-job-scraper) actors for salary and job data from other boards.

#### How much does it cost to scrape finance job listings?

This Actor is **pay-per-result**: $0.90 per 1,000 job records (plus a tiny $0.00005 per-run start fee). Free-tier users get up to **10 results per run** at no charge. A run of a few hundred listings typically finishes in under a minute.

#### Can I get eFinancialCareers data without an API key or login?

Yes. The search API is openly accessible and requires no authentication - that is exactly what this Actor uses.

#### How do I build a salary benchmarking dataset from finance job postings?

Set `maxResults` high (e.g. 1,000+) for a given market and role keyword, then aggregate on the structured `minSalary` / `maxSalary` / `salaryCurrency` fields. Filter rows where salary is null or `"Competitive"` when building benchmarks. Re-run weekly for time-series compensation data across London, New York, Singapore, Dubai, and other markets.

#### Which countries does eFinancialCareers cover?

23 markets in this Actor's selector - UK, US, Germany, France, Switzerland, Singapore, Hong Kong, Australia, Ireland, Luxembourg, Netherlands, Sweden, Norway, Denmark, Finland, Italy, Spain, South Africa, UAE, Saudi Arabia, Japan, China, and Malaysia.

#### Can I get eFinancialCareers data in Excel or CSV?

Yes - every finished run exports to JSON, CSV, Excel, or HTML from the Apify dataset, and can also be streamed via the Apify API into Google Sheets, Zapier, or Make.

#### Is scraping eFinancialCareers legal?

This Actor reads the same public JSON API the website uses, without bypassing logins or CAPTCHAs. Use the data responsibly and stay compliant with eFinancialCareers' Terms of Service and applicable data-protection law - see the disclaimer below.

#### How do I keep a finance job dataset fresh?

Use the Apify scheduler: daily runs for job monitoring and candidate sourcing, weekly runs for salary benchmarks and hiring-trend analysis.

### SEO Keywords

efinancialcareers scraper, efinancialcareers api, efinancialcareers jobs scraper, scrape efinancialcareers, efinancialcareers data extraction, efinancialcareers alternative, finance jobs scraper, finance jobs api, banking jobs scraper, banking jobs api, investment banking jobs data, fintech jobs scraper, quant jobs scraper, hedge fund jobs data, private equity jobs data, compliance jobs api, finance salary benchmark, salary data api, finance job board scraper, finance job market research, recruitment intelligence data, financial services hiring trends, london banking jobs, new york finance jobs, singapore finance jobs, dubai finance jobs, job board data feed

### For AI Agents & LLM Apps

**Purpose:** returns structured finance job listings (title, company, location, salary band, contract type, full description, apply URL) from eFinancialCareers for a keyword x country x optional location search.

**Minimal working input:**

```json
{
  "searchQuery": "analyst",
  "countryCode2": "GB",
  "maxResults": 50
}
```

**Variant - location-filtered (US market):**

```json
{
  "searchQuery": "quant",
  "countryCode2": "US",
  "location": "New York",
  "maxResults": 200
}
```

**Output fields:** `jobId`, `title`, `company`, `fullCompanyName`, `location`, `city`, `state`, `country`, `region`, `salary`, `minSalary`, `maxSalary`, `salaryCurrency`, `contractType`, `employmentType`, `workArrangement`, `postedDate`, `closingDate`, `description`, `summary`, `sectors`, `language`, `isExternalApplication`, `applyUrl`, `jobUrl`, `scrapedAt`.

**Behaviors an agent should know:**

- Non-paying (free) Apify accounts are hard-capped at **10 results per run** regardless of `maxResults`; paying accounts get the full `maxResults` (up to 10,000).
- Page size is fixed internally at 100 records; pagination is automatic - `maxResults` caps the total records returned.
- `location` is an optional free-text filter applied server-side by the API (e.g. `"London"`, `"New York"`).
- A job can be cross-posted with different `jobId` values - dedupe on `(company, title)` if unique roles are required.
- `salary`/`minSalary`/`maxSalary`/`salaryCurrency` are only populated when the employer publishes a pay range; otherwise `salary` may be `"Competitive"` or `null`.
- `applyUrl` and `jobUrl` both point to the canonical eFinancialCareers job page.

**Billing:** pay-per-result - $0.0009 per job record (~$0.90 per 1,000 jobs) plus a $0.00005 actor-start fee. Free tier: 10 results/run.

### Competitive Positioning

| Capability | Market competitors | This actor |
|---|---|---|
| Full job description in every record by default | Several popular actors require an extra flag for full descriptions - e.g. Black Falcon Data (`includeDetails`) | Included - the description arrives in the base search response, no extra requests or flags |
| Markets | Fixed market lists in some competitors (e.g. Unfenced Group: 19 markets) | 23 country codes including Dubai, Riyadh, Tokyo, Shanghai, and Kuala Lumpur |
| Price per 1,000 results | $0.95 (Black Falcon Data), $0.89 (Unfenced Group), $1.00 (Solid Code), $0.70 (SASWAVE) | $0.90 - undercuts the two most-used paid actors (Black Falcon Data, Solid Code) |
| Free tier | Account-dependent | 10 results per run without paying |

### Legal & Compliance Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by eFinancialCareers or any of its parent companies, subsidiaries, or affiliates. All trademarks are the property of their respective owners.

The Actor accesses only publicly available pages and the public JSON search API that powers the eFinancialCareers website. It does not bypass login walls, solve CAPTCHAs, or access candidate, recruiter, or other non-public data.

Users are responsible for ensuring their use of the data complies with eFinancialCareers' Terms of Service and applicable data-protection law (including GDPR/CCPA where relevant), and for any recruitment, employment, or commercial decisions made from the data.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search for (e.g. 'analyst', 'trader', 'risk', 'quant', 'compliance', 'private equity').

## `countryCode2` (type: `string`):

Two-letter ISO country code to search in (e.g. GB, US, DE, FR, SG, HK, CH, AU).

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

Maximum number of job listings to return.

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

Optional free-text location filter (e.g. 'London', 'New York'). Applied server-side by the API.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "searchQuery": "analyst",
  "countryCode2": "GB",
  "maxResults": 100,
  "location": "",
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQuery": "analyst",
    "countryCode2": "GB",
    "maxResults": 100,
    "location": "",
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/efinancialcareers-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 = {
    "searchQuery": "analyst",
    "countryCode2": "GB",
    "maxResults": 100,
    "location": "",
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/efinancialcareers-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 '{
  "searchQuery": "analyst",
  "countryCode2": "GB",
  "maxResults": 100,
  "location": "",
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/efinancialcareers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/efinancialcareers-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/b9dQbHw806EDOnnHq/builds/2EC6L6tRDt1JQpYmo/openapi.json
