# Relocate.me Jobs Scraper - Visa Tech Jobs (`benthepythondev/relocate-me-jobs-scraper`) Actor

Scrape Relocate.me international tech jobs with title, company, country, city, relocation-friendly job URL and short description.

- **URL**: https://apify.com/benthepythondev/relocate-me-jobs-scraper.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Relocate.me Jobs Scraper - Visa Tech Job Data

Scrape international tech jobs from **Relocate.me** in one run. Export job title, hiring company, country, city, description and listing URL for roles that are relevant to relocation, visa sponsorship, global hiring and remote international work.

### What is the Relocate.me Jobs Scraper?

Relocate.me is a niche job board for technology professionals looking for international opportunities. Its listings are especially valuable because they focus on relocation-friendly employers, visa-support roles and globally mobile tech talent. This actor converts Relocate.me search pages into a clean dataset that can be exported to JSON, CSV, Excel, Google Sheets or connected to an automated workflow.

The actor uses a lightweight HTTP parser. Relocate.me renders job cards directly in the HTML, so the scraper does not need a browser, login, session cookie, proxy or paid unblocker for normal searches. That makes it suitable for scheduled monitoring and daily store auto-tests.

### Why use this actor?

Use this actor when you need targeted international hiring data rather than a generic job-board export. It is useful for:

- recruiters sourcing employers that hire internationally
- immigration and relocation agencies monitoring visa-friendly roles
- job seekers tracking target countries and companies
- labor-market research for global tech hiring
- sales teams building lead lists of relocation-friendly employers
- HR-tech products enriching job supply data
- newsletters and job boards focused on international tech careers

Relocate.me has a smaller but more focused dataset than broad aggregators. That focus is commercially useful: companies posting there are often actively trying to attract cross-border candidates.

### Input

Paste one or more Relocate.me URLs:

```json
{
  "searchUrls": [
    "https://relocate.me/search?query=python"
  ],
  "maxResults": 25
}
````

Or let the actor build a keyword search:

```json
{
  "keyword": "python",
  "maxResults": 25
}
```

You can also use the general international jobs page:

```json
{
  "searchUrls": [
    "https://relocate.me/international-jobs"
  ],
  "maxResults": 25
}
```

### Output

Each dataset item represents one job:

```json
{
  "job_id": "10264",
  "title": "Senior Frontend Engineer",
  "company": "HENNGE",
  "country": "Japan",
  "city": "Tokyo",
  "location": "Tokyo, Japan",
  "description": "We are looking for a Senior Frontend Engineer...",
  "url": "https://relocate.me/japan/tokyo/hennge/senior-frontend-engineer-10264",
  "source": "Relocate.me",
  "search": "https://relocate.me/search?query=python"
}
```

The actor returns fields only when they are visible on the job card. It does not invent salary, visa or benefit information when the source card does not show it.

### Pricing

This actor uses pay-per-event pricing:

- small actor start fee per run
- one `result` event for each job pushed to the dataset

Small tests stay cheap, and larger exports scale with the amount of useful data returned.

### Best practices

Use focused keyword searches for production runs. Searches like `python`, `backend`, `frontend`, `devops`, `data engineer`, `product manager` or `security` create cleaner datasets than a broad all-jobs export.

Schedule separate tasks for different roles or countries. This makes it easier to monitor hiring trends and identify which companies repeatedly hire international talent.

Pair the output with a contact enrichment actor if you are doing lead generation. The company field gives you a clean starting point; you can enrich the company domain, emails and social profiles in a second workflow.

Keep `maxResults` low during setup. Once the output fields match what you need, increase the limit for scheduled exports.

For recruiting agencies, this data is a useful top-of-funnel signal. A company advertising on a relocation-focused job board is often more open to international candidates than a company posting only on a local board. That makes the output useful for building targeted employer lists, tracking which companies repeatedly hire globally, and prioritizing sales outreach for recruiting, immigration, relocation or employer-of-record services.

For job-market research, the actor can be scheduled daily or weekly to build a historical dataset. You can compare how many international roles appear by country, which companies keep posting, which role types are common, and which locations attract globally mobile tech candidates. Because the output includes both normalized fields and the original listing URL, analysts can use the dataset for dashboards while still preserving an audit trail back to the source listing.

For job seekers and career communities, the actor can power alerts, newsletters or internal opportunity trackers. Run a saved task for a keyword such as `python`, `frontend`, `backend`, `devops`, `data` or `security`, then send new rows to Slack, Discord, email, Airtable or a private job board.

### Integrations

The dataset works well with:

- Google Sheets for lightweight tracking
- Airtable or Notion for candidate and company lists
- HubSpot, Pipedrive or Salesforce for employer prospecting
- Make, Zapier or n8n for alerts and automations
- BI dashboards for international hiring analytics
- custom APIs through Apify dataset endpoints

### FAQ

#### Does this require a Relocate.me account?

No. It reads public job-search pages.

#### Does it confirm visa sponsorship for every role?

No. Relocate.me focuses on relocation-friendly and international jobs, but the actor only returns what is visible on the public card. Always review the listing details before making compliance or immigration decisions.

#### Can it scrape job detail pages?

This version focuses on search-card data because it is fast and reliable for monitoring. Detail-page scraping can be added later if deeper fields become necessary.

#### Is it suitable for scheduled runs?

Yes. It uses a lightweight HTTP engine and a small default input, which makes it suitable for daily monitoring and Apify store auto-tests.

### You might also like

- JustJoin.it Scraper
- StepStone Scraper
- Jobrapido Scraper
- CWJobs Scraper
- iCIMS Jobs Scraper
- Workable Jobs Scraper
- SmartRecruiters Jobs Scraper
- Ashby Jobs Scraper
- Website Contact Extractor
- Google Maps Email Scraper

### Keywords

Relocate.me scraper, relocation jobs scraper, visa sponsorship jobs, international tech jobs, global hiring data, remote international jobs, tech recruiting leads, job board scraper, hiring intelligence, employer lead generation, Apify jobs scraper.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste Relocate.me search or international-jobs URLs. If empty, the actor builds a keyword search.

## `keyword` (type: `string`):

Keyword used when Search URLs is empty.

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

Maximum number of jobs to return per URL.

## Actor input object example

```json
{
  "searchUrls": [
    "https://relocate.me/search?query=python"
  ],
  "keyword": "python",
  "maxResults": 10
}
```

# 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 = {
    "searchUrls": [
        "https://relocate.me/search?query=python"
    ],
    "keyword": "python",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/relocate-me-jobs-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 = {
    "searchUrls": ["https://relocate.me/search?query=python"],
    "keyword": "python",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/relocate-me-jobs-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 '{
  "searchUrls": [
    "https://relocate.me/search?query=python"
  ],
  "keyword": "python",
  "maxResults": 10
}' |
apify call benthepythondev/relocate-me-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Relocate.me Jobs Scraper - Visa Tech Jobs",
        "description": "Scrape Relocate.me international tech jobs with title, company, country, city, relocation-friendly job URL and short description.",
        "version": "1.0",
        "x-build-id": "xGyz45jczhVUJqHvN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~relocate-me-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-relocate-me-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~relocate-me-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-relocate-me-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~relocate-me-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-relocate-me-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Paste Relocate.me search or international-jobs URLs. If empty, the actor builds a keyword search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keyword used when Search URLs is empty.",
                        "default": "python"
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of jobs to return per URL.",
                        "default": 40
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
