# eFinancialCareers Job Scraper – Real-Time Data (`b2b_leads/efinancialcareers-real-time-data-scraper`) Actor

Live finance job intelligence from eFinancialCareers. Search roles by keyword and location, get full job details, track company hiring, or scrape any URL across UK and US markets. Streams to your dataset in real time with webhook alerts.

- **URL**: https://apify.com/b2b_leads/efinancialcareers-real-time-data-scraper.md
- **Developed by:** [Emmanuel](https://apify.com/b2b_leads) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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/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 Real-Time Data

> **Free trial:** free Apify plans get **2 results per run**. Upgrade to a paid plan for unlimited exports.

Live finance job intelligence from eFinancialCareers — the specialist hiring marketplace for banking, markets, asset management, fintech, and professional services. Search live roles by keyword and location, open full job records, track what named employers are hiring for, or turn any site URL into structured rows. Every record streams to your dataset in real time, with optional webhooks for instant alerts.

### Who is it for

- **Recruiters & sourcing teams** building finance talent pipelines (analysts, quants, developers, compliance, bankers)
- **Hiring managers & HR** benchmarking live demand, titles, and advertised compensation
- **Agencies & RPOs** monitoring new mandates the moment they go live
- **Job boards & career platforms** enriching finance listings with structured detail
- **Researchers & analysts** tracking hiring trends across banks, funds, and fintechs
- **AI agents & automation builders** feeding fresh finance job data into CRMs, alerts, and reports

### Features

| Checkbox | What you get |
|---|---|
| 🔍 Job Search (default on) | Live keyword search with location, e.g. `analyst in London`. Fast cards by default; toggle **Enrich with full job details** to merge the full description into the same row (`detailsFetched: true`) |
| 📦 Job Details | Full record for specific jobs by numeric ID or URL — description, salary, location, type, company |
| 🏢 Company Jobs | Hiring activity for named employers, e.g. `Citi`, `Goldman Sachs` |
| 🔗 Scrape By URL | Any eFinancialCareers job or search-results URL, auto-detected |
| 🔔 Delivery | Optional webhook (`json` or `slack`) pushed per record, in addition to the dataset |
| 🌐 Connection | Residential proxy recommended; match the country to your market (GB/US) |

Every discovered job is always saved — enriching never drops rows, and search enrichment never creates duplicate rows.

### Input reference

- `country` (select, default `GB`): `GB` = United Kingdom market, `US` = United States market.
- `enableJobSearch` (default `true`), `jobKeywords` (default `["analyst", "compliance"]`), `jobTitle` (optional extra title search), `jobLocation` (default `London`; empty = nationwide), `jobsPerQuery` (1–200, default `10`), `fetchJobDetails` (default `false`).
- `enableJobDetails`, `jobIds` (numeric IDs, e.g. `24889625`), `jobUrls` (detail URLs).
- `enableCompanyJobs`, `companyNames` (e.g. `["Citi"]`), `jobsPerCompany` (1–200, default `10`).
- `enableScrapeByUrl`, `scrapeUrls`.
- `webhookUrl`, `webhookFormat` (`json` | `slack`).
- `proxyConfiguration` (Residential default, country matched to `country`).

Empty input still runs a useful demo: Job Search for `analyst` + `compliance` in London (10 per keyword).

### Output fields

One row per job. `featureType` is `job_search`, `job_details`, `company_jobs`, or `scrape_by_url`. Core fields: `job_id`, `job_url`, `title`, `company`, `company_url`, `location`, `salary`, `job_type`, `industry`, `snippet`, `description_text`, `description_html`, `posted_date`, `apply_url`, `search_keyword` / `company_query`, `position`, `detailsFetched`, `pageType` (URL scrapes), `scrapedAt`, `url`. Filter dataset views by `featureType`.

### Webhooks

Set `webhookUrl` to receive each record as it is saved (dataset writes always happen too).

- `json`: the full record object — ideal for Zapier, Make, n8n, or your own hiring bot.
- `slack`: a Slack message payload (`{ "text": "…" }`) — paste an Incoming Webhook URL and jobs arrive as chat messages.

Delivery is best-effort: a failed webhook never stops the run or the dataset write.

### MCP / AI-agent usage

Pair this actor with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp-server): your agent can start runs and read the dataset without custom code.

Example question for your agent:

> “Use the eFinancialCareers actor to find live compliance jobs in London, then summarize the top 5 by company with salary and posting link.”

### FAQ

- **Which proxy should I use?** Residential, with the country matched to your market (`GB` for the UK market, `US` for the US market).
- **How does the free trial work?** Free Apify plans receive up to 2 results per run with an upgrade notice. Paid plans are uncapped.
- **How fresh is the data?** Every run reads the live marketplace, so results reflect what candidates see right now — including roles posted minutes ago.
- **Do full details slow down search?** Enrichment adds a little extra time per record to merge the full description into the same row. Leave it off for the fastest scans.
- **Search vs Details rows?** `job_search` rows come from keyword discovery (enriched in place when the toggle is on). `job_details` rows come only from the Job Details feature for IDs/URLs you name.

# Actor input Schema

## `country` (type: `string`):

eFinancialCareers market to search. Affects listings and the recommended proxy country.

## `enableJobSearch` (type: `boolean`):

Live keyword search across eFinancialCareers — analysts, quants, developers, compliance, investment banking and more. On by default and prefilled so you can click Start and get results in seconds.

## `jobKeywords` (type: `array`):

One or more search terms, e.g. "analyst", "compliance", "quant". Required when Job Search is on (unless Job title is set).

## `jobTitle` (type: `string`):

An additional title search, e.g. "Senior Java Developer". Runs as one extra search alongside the keywords above.

## `jobLocation` (type: `string`):

City or region, e.g. "London", "New York". Leave empty to search nationwide.

## `jobsPerQuery` (type: `integer`):

Maximum jobs to return for each keyword (1–200). Default 10 — perfect for instant demo runs.

## `fetchJobDetails` (type: `boolean`):

When on, each search result stays ONE row (detailsFetched=true) but is enriched with the full job description and posting details. Adds a little extra time per job. When off, you get fast search cards with title, company, location, salary, and snippet. Every discovered job is always saved — never filtered out.

## `enableJobDetails` (type: `boolean`):

Fetch the full record for specific eFinancialCareers jobs by URL or job ID.

## `jobIds` (type: `array`):

eFinancialCareers numeric job IDs (the digits after .id in job URLs), e.g. 24889625.

## `jobUrls` (type: `array`):

Full eFinancialCareers job URLs (detail pages with .id links).

## `enableCompanyJobs` (type: `boolean`):

Track what a specific employer is hiring for right now across financial services.

## `companyNames` (type: `array`):

Employer names to track, e.g. "Citi", "Goldman Sachs".

## `jobsPerCompany` (type: `integer`):

Maximum jobs to collect per company (1–200).

## `enableScrapeByUrl` (type: `boolean`):

Paste any eFinancialCareers URL — a job detail page or a search-results page.

## `scrapeUrls` (type: `array`):

Any eFinancialCareers job or search-results URL.

## `webhookUrl` (type: `string`):

Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom hiring bot).

## `webhookFormat` (type: `string`):

json = full record object; slack = Slack-friendly message payload.

## `proxyConfiguration` (type: `object`):

Residential proxy recommended. Match the country to the Market region above (GB by default).

## Actor input object example

```json
{
  "country": "GB",
  "enableJobSearch": true,
  "jobKeywords": [
    "analyst",
    "compliance"
  ],
  "jobTitle": "",
  "jobLocation": "London",
  "jobsPerQuery": 10,
  "fetchJobDetails": false,
  "enableJobDetails": false,
  "jobIds": [],
  "jobUrls": [],
  "enableCompanyJobs": false,
  "companyNames": [
    "Citi"
  ],
  "jobsPerCompany": 10,
  "enableScrapeByUrl": false,
  "scrapeUrls": [],
  "webhookUrl": "",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# Actor output Schema

## `allResults` (type: `string`):

Full dataset for this run (every featureType).

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

Core fields across features, including detailsFetched for search rows.

## `search` (type: `string`):

featureType=job_search only. One job = one row; full details are merged when "Enrich with full job details" is enabled.

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

featureType=job_details — only from the Job Details feature (specific IDs/URLs), not from search enrichment.

## `company_jobs` (type: `string`):

No description

## `scrape_by_url` (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 = {
    "country": "GB",
    "enableJobSearch": true,
    "jobKeywords": [
        "analyst",
        "compliance"
    ],
    "jobLocation": "London",
    "jobsPerQuery": 10,
    "fetchJobDetails": false,
    "enableJobDetails": false,
    "jobIds": [],
    "jobUrls": [],
    "enableCompanyJobs": false,
    "companyNames": [
        "Citi"
    ],
    "jobsPerCompany": 10,
    "enableScrapeByUrl": false,
    "scrapeUrls": [],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_leads/efinancialcareers-real-time-data-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 = {
    "country": "GB",
    "enableJobSearch": True,
    "jobKeywords": [
        "analyst",
        "compliance",
    ],
    "jobLocation": "London",
    "jobsPerQuery": 10,
    "fetchJobDetails": False,
    "enableJobDetails": False,
    "jobIds": [],
    "jobUrls": [],
    "enableCompanyJobs": False,
    "companyNames": ["Citi"],
    "jobsPerCompany": 10,
    "enableScrapeByUrl": False,
    "scrapeUrls": [],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_leads/efinancialcareers-real-time-data-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 '{
  "country": "GB",
  "enableJobSearch": true,
  "jobKeywords": [
    "analyst",
    "compliance"
  ],
  "jobLocation": "London",
  "jobsPerQuery": 10,
  "fetchJobDetails": false,
  "enableJobDetails": false,
  "jobIds": [],
  "jobUrls": [],
  "enableCompanyJobs": false,
  "companyNames": [
    "Citi"
  ],
  "jobsPerCompany": 10,
  "enableScrapeByUrl": false,
  "scrapeUrls": [],
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call b2b_leads/efinancialcareers-real-time-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2b_leads/efinancialcareers-real-time-data-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/geUz9aFWUqf37qTiw/builds/qQMPmB82NgQMGTcVz/openapi.json
