# Morgan McKinley Scraper - Ireland & UK Jobs (`studio-amba/morganmckinley-scraper`) Actor

Scrape Ireland and UK job listings from Morgan McKinley, a leading recruitment agency. Extract titles, salaries, disciplines, consultants, and apply links by keyword and location. No login or cookies required.

- **URL**: https://apify.com/studio-amba/morganmckinley-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 result scrapeds

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?

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

### What does Morgan McKinley Scraper do?

**Morgan McKinley Scraper** extracts job listings from [morganmckinley.com](https://www.morganmckinley.com), a global recruitment agency with a strong presence across Ireland and the UK covering hundreds of live vacancies in accounting, banking, technology, legal, HR, engineering, and more. Give it a keyword, a country (Ireland or UK), and optionally a location, and it returns structured data for every matching job: title, discipline, specialism, salary (when disclosed), contract type, assigned consultant and contact email, posting date, expiry date, and a direct apply link. It reads the site's own server-rendered job pages, so there is no login, no cookies, and no browser automation required.

Run it on the Apify platform to get Irish and UK recruitment market data via API, schedule recurring scrapes, and pipe results into tools like Zapier, Make, Google Sheets, Airtable, and Slack.

### How to scrape Morgan McKinley data

1. Go to the Morgan McKinley Scraper on the Apify Store.
2. Click **Try for free** to open the actor in the Apify Console.
3. Pick a **Country**: Ireland or UK.
4. Enter a search query (e.g. "accountant", "credit manager", "software developer", "HR advisor"). Leave it empty to browse every live job in that country.
5. Optionally enter a lowercase location (e.g. "dublin", "cork", "london", "bristol"). Leave it empty to search nationwide.
6. Set the maximum number of results you want (default: 50).
7. Leave the proxy configuration on automatic (the default) -- Morgan McKinley has no anti-bot protection.
8. Click **Start** and wait for the run to finish.
9. Download your data as JSON, CSV, Excel, or HTML from the Output tab, or pull it via the Apify API.

### Why use Morgan McKinley Scraper?

- **Irish and UK salary benchmarking** -- compare advertised pay across roles, disciplines, and cities, with currency attached to every disclosed figure.
- **Recruitment intelligence** -- see which consultants and specialisms are active on which roles, and spot hiring trends at one of Ireland and the UK's established recruitment agencies.
- **Labour market analysis** -- understand demand across disciplines and regions in two closely linked markets. Which sectors are hiring? Which cities have the most vacancies?
- **Lead generation** -- Morgan McKinley job listings surface active hiring employers by discipline and region, useful for targeting B2B services, tools, or staffing solutions at companies currently recruiting.
- **Job aggregation** -- feed structured Irish and UK listings into your own job board, career site, or candidate-alert system.
- **Academic and policy research** -- clean, structured data for labour economics, skills-gap studies, and workforce reports.

### About Morgan McKinley

Morgan McKinley is a global recruitment and staffing group with an established Ireland and UK business, covering hundreds of live vacancies across professional sectors. Key characteristics:

- **Coverage**: Nationwide Ireland (Dublin, Cork, Limerick, Galway, and more) and UK (London, Bristol, Manchester, and more), plus hybrid and remote roles.
- **Sectors**: Accounting & Finance, Banking & Financial Services, Business Support, Construction, Engineering, HR, Legal Risk & Compliance, Life Sciences, Sales & Marketing, Technology, Supply Chain & Procurement, and more -- the exact discipline list differs slightly between the Irish and UK sites.
- **Confidential employers**: Morgan McKinley is a recruitment agency, not a job board -- roles are posted under Morgan McKinley's own name with the actual hiring company kept confidential until a candidate applies. The scraper captures the assigned consultant and their contact email instead of a company name.
- **Salary data**: Some adverts show a specific range; many are marked "Competitive" and withhold the figure from candidates. This actor returns the advertised range only when Morgan McKinley itself discloses it publicly -- `salary` fields are `null` on "Competitive" listings rather than guessing.
- **Work patterns**: Full-time, part-time, permanent, and contract roles.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | No | Market to search: `IE` (Ireland) or `UK` (United Kingdom). Defaults to `IE`. |
| `searchQuery` | string | No | Job keyword to search for (e.g. `accountant`, `credit manager`, `software developer`). Leave empty to browse all live jobs in the selected country. |
| `location` | string | No | City or county/region to filter by, in lowercase (e.g. `dublin`, `cork`, `london`, `greater manchester`). Leave empty to search nationwide. |
| `maxResults` | integer | No | Maximum number of listings to scrape. Default `50`. |
| `proxyConfiguration` | object | No | Apify proxy settings. Defaults to automatic -- no anti-bot protection was found on this site. |

#### Example input

```json
{
  "country": "UK",
  "searchQuery": "credit manager",
  "location": "london",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Output

Each job listing is a flat JSON object with the following fields:

| Field | Type | Example |
|-------|------|---------|
| `jobId` | string | `1103373` |
| `jobReference` | string | `JN -072026-2004924` |
| `jobTitle` | string | `Credit Controller` |
| `recruiter` | string | `Morgan McKinley` |
| `consultant` | string | `Aimme Mccarville` |
| `consultantEmail` | string | `amccarville@morganmckinley.com` |
| `discipline` | string | `Accounting & Finance` |
| `specialism` | string | `Credit Control` |
| `location` | string | `Biggleswade` |
| `country` | string | `United Kingdom` |
| `countryCode` | string | `GB` |
| `contractType` | string | `Permanent` |
| `salary` | string | null | `£30k - £35k` |
| `salaryMin` | number | null | `30000` |
| `salaryMax` | number | null | `35000` |
| `currency` | string | null | `GBP` |
| `descriptionSnippet` | string | `Morgan McKinley Northern Home Counties are proud to be representing...` |
| `postedDate` | string | `2026-07-08T17:35:11.000Z` |
| `expiryDate` | string | `2026-09-06T17:35:11.000Z` |
| `url` | string | `https://www.morganmckinley.com/uk/jobs/biggleswade/credit-controller/1103373` |
| `scrapedAt` | string | `2026-09-03T19:49:09.167Z` |

#### Example output

```json
{
  "jobId": "1103373",
  "jobReference": "JN -072026-2004924",
  "jobTitle": "Credit Controller",
  "recruiter": "Morgan McKinley",
  "consultant": "Aimme Mccarville",
  "consultantEmail": "amccarville@morganmckinley.com",
  "discipline": "Accounting & Finance",
  "specialism": "Credit Control",
  "location": "Biggleswade",
  "country": "United Kingdom",
  "countryCode": "GB",
  "contractType": "Permanent",
  "salary": "£30k - £35k",
  "salaryMin": 30000,
  "salaryMax": 35000,
  "currency": "GBP",
  "descriptionSnippet": "Morgan McKinley Northern Home Counties are proud to be representing a well-established and growing business in Biggleswade in their search for a Credit Controller to join their finance team on a permanent basis...",
  "postedDate": "2026-07-08T17:35:11.000Z",
  "expiryDate": "2026-09-06T17:35:11.000Z",
  "url": "https://www.morganmckinley.com/uk/jobs/biggleswade/credit-controller/1103373",
  "scrapedAt": "2026-09-03T19:49:09.167Z"
}
```

### Cost estimate

This actor is billed on Apify's Pay Per Result model. Each result costs one listing-page fetch (amortized across ~20 jobs/page) plus one detail-page fetch, so it's still fast and lightweight -- a typical run of 50-100 listings finishes in well under a minute of compute. You pay per job returned plus a small per-run start fee. Check the actor's pricing tab for the exact current rate. Usage cost only settles once a run reports SUCCEEDED -- reading a mid-run dataset will show a cost far below the final total.

### Limitations and known issues

- **Employer names are usually not disclosed** -- Morgan McKinley keeps the underlying hiring company confidential on most listings. The `consultant` and `consultantEmail` fields identify who to contact instead of a `company` field.
- **Salary as advertised** -- when a listing is marked "Competitive" and the figure isn't shown to candidates, the `salary`, `salaryMin`, `salaryMax`, and `currency` fields are all `null` rather than surfacing an internal estimate.
- **Ireland and UK only** -- this actor targets Morgan McKinley's `ie` and `uk` markets. Morgan McKinley also operates in Australia, Canada, Hong Kong, Japan, and Singapore; those are non-European and out of scope for this actor.
- **Location filter is exact-match** -- the `location` input must match the site's own county/city filter value (lowercase). Use a broad term like `dublin` or `london` rather than a specific street or postcode.
- **Discipline lists differ by country** -- Ireland's site groups jobs under disciplines like Construction, Engineering, and Life Sciences; the UK site instead has Technology and Supply Chain & Procurement. The scraped `discipline` and `specialism` fields reflect whatever Morgan McKinley tagged the listing with, so don't expect an identical set of values between countries.

### More Irish and UK job scrapers

- [Hays](https://apify.com/studio-amba/hays-scraper) -- UK recruitment agency job listings and salary data
- [IrishJobs](https://apify.com/studio-amba/irishjobs-scraper) -- Ireland's leading job board
- [Totaljobs](https://apify.com/studio-amba/totaljobs-scraper) -- major UK job board, StepStone Group
- [Jobsite](https://apify.com/studio-amba/jobsite-scraper) -- UK job listings across all sectors
- [eFinancialCareers](https://apify.com/studio-amba/efinancialcareers-scraper) -- finance and banking jobs

Browse the [Studio AMBA profile](https://apify.com/studio-amba) on the Apify Store for more European job and marketplace scrapers.

### FAQ

**Do I need a Morgan McKinley account or API key?**
No. This actor reads Morgan McKinley's public job listing pages. There is no login, no cookies, and no API key required.

**Why don't I see a company/employer name?**
Morgan McKinley is a recruitment agency. Most listings are posted under Morgan McKinley's own name with the underlying employer kept confidential -- the actor returns the assigned consultant and their contact email instead.

**Why is the salary missing on some listings?**
Morgan McKinley marks some listings "Competitive" and doesn't disclose a figure to candidates. This actor only returns a salary when Morgan McKinley itself publishes one -- it never estimates or infers a hidden figure.

**Can I filter by discipline, contract type, or salary?**
The current version filters by keyword, country, and location. Discipline, specialism, contract type, and salary are returned on every result so you can filter them yourself after scraping.

**Is scraping morganmckinley.com legal?**
This actor collects publicly available job listing data. You are responsible for using the data in line with the site's terms and applicable law. Do not use it to send unsolicited communications in breach of regulations.

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API -- maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

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

Which Morgan McKinley market to search.

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

Job keyword to search for (e.g. 'accountant', 'project manager', 'software developer'). Leave empty to browse all live jobs in the selected country.

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

City or county/region to filter by. Must match the site's own location filter values, e.g. 'dublin', 'cork', 'galway' for Ireland or 'london', 'bristol', 'greater manchester' for the UK (lowercase). Leave empty to search nationwide.

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

Maximum number of job listings to scrape.

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

Apify proxy settings. Morgan McKinley has no anti-bot protection -- the default automatic proxy works reliably.

## Actor input object example

```json
{
  "country": "IE",
  "searchQuery": "accountant",
  "location": "dublin",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "country": "IE",
    "searchQuery": "accountant",
    "location": "dublin",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/morganmckinley-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": "IE",
    "searchQuery": "accountant",
    "location": "dublin",
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/morganmckinley-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": "IE",
  "searchQuery": "accountant",
  "location": "dublin",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call studio-amba/morganmckinley-scraper --silent --output-dataset

```

## MCP server setup

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