# eFinancialCareers Jobs Scraper (`solidcode/efinancialcareers-scraper`) Actor

\[💰 $1.0 / 1K] Extract finance, banking, and fintech job listings from eFinancialCareers. Search by keyword and location, filter by sector, employment type, work arrangement, salary, and posting date, and get structured data including titles, companies, salaries, descriptions, and apply links.

- **URL**: https://apify.com/solidcode/efinancialcareers-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 36 total users, 9 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.

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

## eFinancialCareers Jobs Scraper

Pull finance, banking, and fintech job listings from eFinancialCareers at scale — titles, hiring companies, multi-currency salaries, sectors, work arrangement, posting dates, full descriptions, and apply links across the US, UK, Europe, and Asia. Built for finance recruiters, talent teams, and compensation analysts who need fresh, structured eFinancialCareers data without copying listings off the site one search at a time.

### Why This Scraper?

- **Up to 50 keywords in a single run** — batch "quantitative developer", "risk manager", "compliance officer" and more into one execution with cross-query deduplication. The leading competitor runs a single keyword at a time.
- **Five regional scopes covering 45+ country markets** — United States and United Kingdom come back pinned to that one country, or open it up with Europe (30+ markets), Asia (16, led by India, Hong Kong and Singapore), or Global. Pick a multi-country region and your result limit is spread across its countries by job volume, so a Europe run comes back with UK, German, French, Dutch, Irish, Polish and Swiss listings instead of one market's worth.
- **Finance-sector targeting as a first-class filter** — narrow to any of 12 named sectors: Investment Banking / M\&A, Asset Management, Trading, Private Equity, Hedge Funds, Risk Management, Compliance / Legal, Accounting & Finance, Technology, Operations, Wealth Management, or Insurance — a filter the competitor doesn't offer at all.
- **Five employment types, plus a work-arrangement filter** — narrow to Permanent, Contract, Temporary, Internship / Graduate, or Self-Employed roles, and optionally to Remote, Hybrid, or On-site.
- **Work arrangement read out of the ad, not just the tag** — eFinancialCareers employers tag only about 4 listings in 100 as Remote, Hybrid, or In-Office. Every untagged row is checked against the advertised text for a stated arrangement, which more than doubles the rows you can classify, and `workArrangementSource` tells you whether a value came from the listing tag or the ad copy.
- **Pay figures that tell you their own unit, so averages come out right** — a UK day rate of `£800` and a New York salary of `$180,000` both land in `salaryMin`, and `salaryPeriod` says which is which on 96% of the rows carrying a figure (year / month / week / day / hour), with `salaryPeriodSource` naming the evidence behind each one. Filter to `salaryPeriod == "year"` before you average and the number is right; skip that step on a UK contract search and you understate the annual mean by more than half. UK day rates written `£550pd` or `£500 - £600 p/d` and shorthand like `Total Comp: $300K` are all read out of the ad, and `salaryDisclosed` isolates the one ad in five that prints a real number instead of `Competitive`.
- **Full job descriptions out of the box** — every record carries the complete posting text as clean plain text, with no HTML tags or entities to strip out. Across 1,513 listings from eight different searches, a description came back on 100% of rows: median about 4,600 characters, with 8 in 10 landing between 1,700 and 8,400. That is the whole ad, not the search-card teaser. Toggle off for lighter, metadata-only records.
- **Posted-date freshness windows** — restrict to listings posted today, in the last 3 days, or the last 7 days for daily candidate-sourcing pipelines.
- **Direct URL passthrough** — already have a search dialed in on the eFinancialCareers website? Paste the search-result or job URL and the scraper honors it as-is.

### Use Cases

**Recruitment & Sourcing**

- Build candidate pipelines by tracking which banks and funds are hiring for specific desks
- Surface fresh roles daily with the "posted today" window for fast-moving mandates
- Target niche talent by sector (e.g. quant, structured credit, regulatory compliance)
- Identify contract and interim opportunities for staffing-firm placement

**Compensation & Market Research**

- Track salary bands across cities, sectors, and seniority using parsed `salaryMin` / `salaryMax`
- Compare pay for the same role across US, UK, EU, and Asia editions in native currency
- Pull the subset of roles that actually advertise remote or hybrid working, and see how that share moves by city and sector
- Benchmark advertised compensation against your own offer ranges

**Competitive & Hiring Intelligence**

- Monitor which firms are scaling specific teams and how fast their postings turn over
- Track new-entrant fintechs vs. bulge-bracket banks competing for the same talent
- Watch sector hiring shifts (e.g. compliance ramp-ups, trading-desk build-outs)
- Build company-level views of open headcount by function and location

**Job-Market Analytics & Aggregation**

- Power a finance-only or region-specific job board with fresh eFinancialCareers listings
- Build longitudinal datasets of financial-services hiring activity by sector and region
- Study employer behavior around remote work, contract employment, and graduate intake
- Enrich existing job-board records with full descriptions and direct apply links

### Getting Started

#### Simple Keyword Search

The fastest way to start — one keyword, sensible defaults:

```json
{
    "searchQueries": ["financial analyst"],
    "region": "us",
    "maxResultsPerQuery": 100
}
```

#### Filtered Search — Fresh Remote London Roles

Narrow down to recent, remote, permanent roles in a specific market and sector:

```json
{
    "searchQueries": ["risk manager", "compliance officer"],
    "location": "London",
    "region": "uk",
    "sector": "compliance",
    "employmentType": "PERMANENT",
    "workArrangement": "REMOTE",
    "postedWithinDays": "7",
    "maxResultsPerQuery": 200
}
```

#### Compensation Sweep — High-Salary Quant Roles

Surface only roles whose advertised salary clears a floor in the region's currency:

```json
{
    "searchQueries": ["quantitative developer", "quantitative researcher"],
    "region": "us",
    "sector": "trading",
    "minSalary": 200000,
    "maxResultsPerQuery": 500
}
```

#### Direct URL + Keyword Combo

Already have a search tuned on the eFinancialCareers website? Paste the URL alongside your own keywords for a mixed batch:

```json
{
    "searchQueries": ["portfolio manager"],
    "startUrls": [
        "https://www.efinancialcareers.com/jobs?searchString=hedge+fund+analyst&location=Singapore"
    ],
    "region": "asia",
    "maxResultsPerQuery": 250
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["financial analyst"]` | Job titles or keywords to search for, such as `"financial analyst"`, `"risk manager"`, or `"quantitative developer"`. Each keyword runs a separate search (up to 50). Leave empty to collect the broadest result set for your location and filters. |
| `location` | string | `""` | City, region, or country to search in. Examples: `"New York"`, `"London"`, `"Singapore"`, `"Hong Kong"`. Leave empty to search worldwide within the selected region. |
| `startUrls` | string\[] | `[]` | Paste full eFinancialCareers search-result URLs or individual job-listing URLs to scrape them directly. Useful when you already have a search dialed in on the website. Up to 50 URLs per run. |

#### Filters & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `region` | select | `United States` | Which part of the world to search. `United States` and `United Kingdom` return that country only. `Europe (all countries)`, `Asia (all countries)` and `Global (all regions)` cover every country in the block and spread your result limit across them in proportion to how many jobs each country holds. Options: `United States`, `United Kingdom`, `Europe (all countries)`, `Asia (all countries)`, `Global (all regions)`. |
| `sector` | select | `Any sector` | Limit results to one finance sector. Options include `Investment Banking / M&A`, `Asset Management`, `Trading / Sales & Trading`, `Private Equity`, `Hedge Funds`, `Risk Management`, `Compliance / Legal`, `Accounting & Finance`, `Technology`, `Operations`, `Wealth Management`, `Insurance`. |
| `employmentType` | select | `Any` | Filter by contract type. Options: `Any`, `Permanent / Full-time`, `Contract`, `Temporary`, `Internship / Graduate Trainee`, `Self-Employed`. |
| `workArrangement` | select | `Any` | Filter by where the role is performed. Options: `Any`, `Remote`, `Hybrid`, `On-site / Office`. |
| `postedWithinDays` | select | `Any time` | Only show jobs posted within this window. Options: `Any time`, `Today`, `Last 3 days`, `Last 7 days`. |
| `minSalary` | integer | `null` | Only show jobs whose advertised salary meets or exceeds this amount, in the region's local currency. Listings with no pay figure on file are excluded when a minimum is set. |
| `maxResultsPerQuery` | integer | `100` | Maximum job listings to collect per search keyword (or per start URL). Set to `0` to collect all available results. Results come in pages of 50, and the whole final page is always kept, so a small cap can return up to a full page more than requested. |

#### Output

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDescription` | boolean | `true` | Include the full job description text for each listing. Leave on for the most complete data. Turn off for lighter records when you only need titles, companies, locations, and salaries. |

### Output

Each record is one job listing with the full set of structured fields:

```json
{
    "jobId": "24710250",
    "title": "Senior Quantitative Developer",
    "company": "Meridian Capital Partners",
    "companyLogoUrl": "https://www.efinancialcareers.com/logo/8c1f2ad4-6b90-4e77-9a35-0f2d5b41c7e2.png",
    "location": "New York, United States",
    "city": "New York",
    "state": "New York",
    "country": "United States",
    "salary": "USD180000 - USD220000 per annum",
    "salaryMin": 180000,
    "salaryMax": 220000,
    "salaryCurrency": "USD",
    "salaryPeriod": "year",
    "salaryPeriodSource": "listing",
    "salaryDisclosed": true,
    "employmentType": "Permanent",
    "workArrangement": "Hybrid",
    "workArrangementSource": "listing",
    "sectors": ["Trading - Derivatives (general)", "Technology - Development"],
    "postedDate": "2026-08-25T19:07:28.177Z",
    "expirationDate": "2026-09-22T23:45:00.000Z",
    "summary": "Join a systematic trading desk building low-latency pricing models...",
    "description": "We are seeking a Senior Quantitative Developer to design and implement...",
    "isExternalApplication": false,
    "applyUrl": "https://www.efinancialcareers.com/jobs-United_States-New_York-Senior_Quantitative_Developer.id24710250",
    "jobUrl": "https://www.efinancialcareers.com/jobs-United_States-New_York-Senior_Quantitative_Developer.id24710250",
    "searchQuery": "quantitative developer",
    "searchLocation": "New York",
    "scrapedAt": "2026-08-26T11:42:40.017128+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | eFinancialCareers job identifier — an all-digit string such as `24710250`, with no letter prefix. |
| `title` | string | Job title. |
| `company` | string | Hiring company or recruiter brand name. |
| `companyLogoUrl` | string | null | Company / brand logo URL. |
| `summary` | string | null | Short summary as shown on the search-results card. |
| `description` | string | null | Full job description text (when `includeDescription` is on). |
| `jobUrl` | string | Canonical eFinancialCareers listing URL. |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was captured. |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `location` | string | null | Full location string as displayed, in `City, Country` form — `New York, United States`, `London, United Kingdom`. City-states and single-name markets come back as just that name (`Singapore`, `Hong Kong`, `Luxembourg`). |
| `city` | string | null | City or borough — `New York`, `Manhattan`, `London`, `Frankfurt am Main`. |
| `state` | string | null | State, province, or region, always spelled out in full and never abbreviated: `New York` rather than `NY`, `England` for most UK roles, `Ile-de-France` for Paris. 95 distinct values across a 1,513-listing sample. |
| `country` | string | null | Country name in full, never a two- or three-letter code: `United States`, never `USA`. 21 countries across the same sample, led by United States, United Kingdom, Singapore, France, Hong Kong, and Germany. |

#### Salary

| Field | Type | Description |
|-------|------|-------------|
| `salary` | string | null | Raw advertised salary text, exactly as the employer wrote it. Most ads print a placeholder here (`Competitive`, `Negotiable`) rather than a figure. |
| `salaryMin` | number | null | Lowest pay figure the listing states. Empty when the ad quotes a ceiling only ("Up to £1,400 per day"). |
| `salaryMax` | number | null | Highest pay figure the listing states. Matches `salaryMin` when the ad quotes a single number. |
| `salaryCurrency` | string | null | Currency code (e.g. `USD`, `GBP`, `EUR`, `SGD`). |
| `salaryPeriod` | string | null | The unit of `salaryMin` and `salaryMax`: `year`, `month`, `week`, `day`, or `hour`. Filled on 96% of rows that carry a figure. Left empty rather than guessed on the rest, which are mostly Singapore and Hong Kong ads whose market quotes monthly and annual pay in the same range. |
| `salaryPeriodSource` | string | null | What established the period: `listing` (the salary line said so), `description` (the ad text said so next to this figure), or `magnitude` (the size of the figure could only be one unit in that currency). |
| `salaryDisclosed` | boolean | `true` when the row carries a real pay figure, `false` when the employer withheld it. Filter on this to build a comparable pay dataset. |

#### Classification

| Field | Type | Description |
|-------|------|-------------|
| `employmentType` | string | null | Contract type in eFinancialCareers' own wording — one of `Permanent`, `Contract`, `Internships & Graduate Trainee`, `Temporary`, or `Self Employed`. Match these strings exactly downstream: the input dropdown's friendlier labels (`Internship / Graduate Trainee`, `Self-Employed`) are not what lands in the row. |
| `workArrangement` | string | null | One of `Hybrid`, `In-Office`, `Remote`, or `Flexible` — the site says `In-Office`, never "On-site". Taken from the listing tag when the employer set one, otherwise read from the advertised text. Most finance ads state nothing either way, and Asia-Pacific ads almost never do, so expect this blank on a majority of rows. |
| `workArrangementSource` | string | null | `listing` when the employer tagged the role, `description` when the value was read out of the ad copy. Filter to `listing` if you only want the employer's own declaration. |
| `sectors` | string\[] | Finance sectors / job functions tagged on the listing, in the site's own wording — `Technology`, `Accounting & Finance`, `Compliance/Legal - Compliance Regulatory`, `Trading - Derivatives (general)`. 159 distinct values across a 1,513-listing sample, and every row carried at least one. |
| `postedDate` | string | null | ISO date the listing was posted. |
| `expirationDate` | string | null | ISO expiry date when the employer sets a real one. |

#### Application & Provenance

| Field | Type | Description |
|-------|------|-------------|
| `isExternalApplication` | boolean | null | Whether applying happens on an external site. |
| `applyUrl` | string | null | Apply / application URL. |
| `searchQuery` | string | null | The keyword that surfaced this row. |
| `searchLocation` | string | null | The location used for the search. |

### Tips for Best Results

- **Use specific keywords** — `"fixed income trader"` returns far cleaner results than `"trader"`. Broad terms dilute relevance across thousands of postings.
- **Pick the region for coverage, then narrow with `location`** — `Europe`, `Asia` and `Global` sample every country in the block by job volume, so a 100-result Europe run typically spans ten countries. When you want one market only, leave `region` where it is and set `location` to `"Frankfurt"`, `"Hong Kong"` or `"Zurich"` — a location always wins over the wider region. Salaries come back in each listing's own currency either way.
- **Always group by `salaryPeriod` before averaging pay** — a contract search mixes day rates and annual salaries in the same `salaryMin` column, so a straight average over a UK contract pull lands near £25,000 when the annual roles alone average nearly £55,000. Split on `salaryPeriod == "year"` and the two populations separate cleanly.
- **Run a salary-band sweep for compensation studies** — set `minSalary` and run the same role across `us`, `uk`, and `eu` editions to compare pay floors, then keep only the rows where `salaryDisclosed` is `true`. Employers who quote a band to the job board frequently still print `Competitive` on the ad itself, so that flag is the reliable signal, not the salary line.
- **Set `postedWithinDays` to "Today" for fresh listings** — ideal for daily candidate-sourcing pipelines and new-role alerting.
- **Batch related titles in one run** — populate `searchQueries` with several variants (e.g. `["compliance officer", "compliance analyst", "regulatory compliance"]`) to deduplicate across queries automatically and save spinning up multiple runs.
- **Filter on the value the row carries, not the dropdown label** — the input dropdowns use friendly names, the rows carry the site's own wording spelled out in full. In Sheets, Zapier, or your own pipeline, test `country == "United States"` (never `"USA"`), `state == "New York"` (never `"NY"`), and `employmentType == "Internships & Graduate Trainee"` (never `"Internship"`). No location field is ever abbreviated.
- **Turn off `includeDescription` for lighter pulls** — when you only need titles, companies, locations, and salaries, skipping the full description text produces leaner records for high-volume analytics.

### Pricing

**From $1.00 per 1,000 results** — pay only for the job listings you actually receive. **No compute charges — you only pay per result returned.** Apify's loyalty tiers lower the rate as your plan level rises, and Gold subscribers pay the headline price.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.12 | $0.11 | $0.11 | $0.10 |
| 1,000 | $1.20 | $1.13 | $1.06 | $1.00 |
| 10,000 | $12.00 | $11.30 | $10.65 | $10.00 |
| 100,000 | $120.00 | $113.00 | $106.50 | $100.00 |

These tiered rates take effect on 10 September 2026; every run before that date bills at $1.00 per 1,000 results. A "result" is one job listing in the output dataset. We match the headline rate of comparable eFinancialCareers scrapers but ship far more: 50-keyword batches, five regional editions, 12 sector filters, and parsed multi-currency salaries. Platform fees depend on your Apify plan.

### 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 results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate recruiting, market research, compensation benchmarking, and labor-market analysis. Only public job listings are collected — no private employer dashboards, applicant data, or candidate contact details. Users are responsible for complying with applicable laws and eFinancialCareers' Terms of Service. Do not redistribute collected listings as a substitute for eFinancialCareers' own product, and do not use the data for spam, harassment, candidate impersonation, or any unlawful purpose.

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles or keywords to search for, such as 'financial analyst', 'risk manager', or 'quantitative developer'. Each keyword runs a separate search. Leave empty to collect the broadest result set for your location and filters.

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

City, region, or country to search in. Examples: 'New York', 'London', 'Singapore', 'Hong Kong'. Leave empty to search worldwide within the selected region.

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

Paste full eFinancialCareers search-result URLs (e.g. https://www.efinancialcareers.com/jobs?searchString=...) or individual job-listing URLs to scrape them directly. Useful when you already have a search dialed in on the website. Up to 50 URLs per run.

## `region` (type: `string`):

Which part of the world to search. United States and United Kingdom return listings from that country only. Europe and Asia cover every country in the block and spread your result limit across them in proportion to how many jobs each country holds, so a Europe run returns UK, German, French, Dutch and Swiss listings rather than one country. Add a Location below to narrow to a single city or country — a Location always wins over the region.

## `sector` (type: `string`):

Limit results to one finance sector. Leave on 'Any' to include all sectors.

## `employmentType` (type: `string`):

Filter by contract type. Pick one or leave on 'Any' for all types.

## `workArrangement` (type: `string`):

Filter by where the role is performed. Employers tag this on only a small share of listings, so this filter returns a narrow slice. To classify a broad result set instead, leave it on Any and read the workArrangement field on each row.

## `postedWithinDays` (type: `string`):

Only show jobs posted within this time period.

## `minSalary` (type: `integer`):

Only show jobs whose advertised salary meets or exceeds this amount, in the region's local currency (USD / GBP / EUR). Many finance listings hide salary — those are excluded when a minimum is set. Leave empty (or 0) for no minimum.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of job listings to collect per search keyword (or per start URL). Set to 0 to collect all available results across pagination. Results are fetched in pages of 50: the actor stops once your cap is reached but always keeps the whole final page, so a small cap (e.g. 10) can return up to a full page more than you asked for. Listings repeated across pages are deduplicated, so the final count can also run slightly below your cap.

## `includeDescription` (type: `boolean`):

Include the full job description text for each listing. Leave on for the most complete data. Turn off for lighter records when you only need titles, companies, locations, and salaries.

## Actor input object example

```json
{
  "searchQueries": [
    "financial analyst"
  ],
  "startUrls": [],
  "region": "us",
  "sector": "",
  "employmentType": "",
  "workArrangement": "",
  "postedWithinDays": "",
  "maxResultsPerQuery": 100,
  "includeDescription": true
}
```

# Actor output Schema

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

Table of scraped job listings with key fields.

## `detail` (type: `string`):

Complete job data including descriptions, parsed salary fields, sectors, and metadata.

# 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 = {
    "searchQueries": [
        "financial analyst"
    ],
    "location": "",
    "startUrls": [],
    "region": "us",
    "sector": "",
    "employmentType": "",
    "workArrangement": "",
    "postedWithinDays": "",
    "maxResultsPerQuery": 100,
    "includeDescription": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "searchQueries": ["financial analyst"],
    "location": "",
    "startUrls": [],
    "region": "us",
    "sector": "",
    "employmentType": "",
    "workArrangement": "",
    "postedWithinDays": "",
    "maxResultsPerQuery": 100,
    "includeDescription": True,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/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 '{
  "searchQueries": [
    "financial analyst"
  ],
  "location": "",
  "startUrls": [],
  "region": "us",
  "sector": "",
  "employmentType": "",
  "workArrangement": "",
  "postedWithinDays": "",
  "maxResultsPerQuery": 100,
  "includeDescription": true
}' |
apify call solidcode/efinancialcareers-scraper --silent --output-dataset

```

## MCP server setup

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