Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Remote Jobs MCP

БесплатноНе проверен

AI clients such as Claude, Cursor, and other MCP-compatible tools can search, filter, and retrieve real-time remote jobs directly from the Jobicy database.

GitHubEmbed

Описание

AI clients such as Claude, Cursor, and other MCP-compatible tools can search, filter, and retrieve real-time remote jobs directly from the Jobicy database.

README

API MCP RSS

Jobicy API, MCP & RSS Feeds

Add current remote jobs to applications, websites, AI agents, newsletters, research tools, internal dashboards, and automated workflows.

  • No API key or account required
  • Up to 200 jobs per page
  • Cursor pagination through listings published in the last 7 days
  • Batch status checks for up to 100 stored job IDs
  • REST API with structured JSON
  • MCP server for AI assistants, agents, and IDEs
  • Filtered RSS feeds
  • Embeddable widget and WordPress plugin

Full documentation and live API playground: jobicy.com/jobs-rss-feed

Working integration examples

Looking for complete, ready-to-run examples built with the Jobicy API?

Explore Jobicy API Examples for practical integrations including Node.js, Python, Next.js, Telegram, Discord, Slack, WordPress, n8n, Zapier, Make, and AI agents using MCP.

Quick Start

Get up to 200 remote jobs published in the last 7 days with cURL:

curl "https://jobicy.com/api/jobs?count=200"

Get Software Engineering jobs available in the USA with JavaScript:

const response = await fetch(
  "https://jobicy.com/api/jobs?count=10&geo=usa&industry=engineering"
);

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

const data = await response.json();
console.log(data.jobs);

Get Marketing jobs available in Europe with Python:

import requests

response = requests.get(
    "https://jobicy.com/api/jobs",
    params={"count": 10, "geo": "europe", "industry": "marketing"},
    timeout=30,
)
response.raise_for_status()

jobs = response.json()["jobs"]
print(jobs)

Contents

Remote Jobs API

The public Jobs API returns matching remote listings published in the last 7 days on Jobicy. Cursor pagination lets you retrieve more than one page within that window. It can be used for job discovery products, career tools, community websites, newsletters, research, internal applications, and prototypes.

Endpoint

GET https://jobicy.com/api/jobs

Authentication is not required.

OpenAPI Specification

The Jobs API is described by an OpenAPI 3.1 specification:

Import either format into Postman, Swagger UI, or other OpenAPI-compatible tools. The specification covers the public and Commercial Jobs APIs, cursor pagination, batch status checks, location and category taxonomies, response schemas, and errors. Local copies are available as openapi.json and openapi.yaml.

Query Parameters

All filters are optional and can be combined.

Parameter Type Description
count integer Maximum jobs per page. Default: 200; accepted range: 1–200. Use 100 for smaller pages. The final page can contain fewer jobs.
cursor string Opaque continuation token from the previous response's nextCursor. Omit it for the first page and pass it unchanged, URL-encoded, to continue. Jobs feed only; valid for 24 hours from the first request.
geo string Geographic eligibility slug, such as usa, europe, apac, or anywhere.
industry string Job category slug, such as engineering, marketing, or data-science.
tag string Keyword search across available job content. Accepted length: 3–50 characters.

Example:

https://jobicy.com/api/jobs?count=20&geo=usa&industry=marketing&tag=seo

Cursor Pagination

Cursor pagination is the preferred way to page through the jobs feed. It is available for both the public and Commercial Jobs APIs.

  1. Make the first request without cursor, using your chosen count, geo, industry, and tag.
  2. Read nextCursor from the response. If it is a string, pass that exact value back as ?cursor= alongside the same filters.
  3. Continue until nextCursor is null and hasMore is false.

First page:

https://jobicy.com/api/jobs?count=100&geo=usa&industry=engineering

Next page:

https://jobicy.com/api/jobs?count=100&geo=usa&industry=engineering&cursor=NEXT_CURSOR

Replace NEXT_CURSOR with the actual nextCursor value returned by the previous response. Use a query-string builder to URL-encode it. Treat cursors as opaque tokens; do not decode, edit, or construct them.

Window and cursor rules

  • The feed is limited to publication dates within the last 7 days for both public and Commercial requests. The page-size limit does not impose a separate total-record cap within that window.
  • Jobs are ordered by publication time in UTC, newest first, then by descending job ID when publication times are equal.
  • The upper publication boundary is fixed at the start of a traversal. The lower boundary is checked on each request, so jobs older than 7 days can drop out during pagination.
  • Keep geo, industry, and tag unchanged between pages. The page size can change within the accepted range.
  • Cursors expire 24 hours after the first request. Later pages do not extend that lifetime.
  • An expired or modified cursor, or a cursor used with different filters, returns HTTP 400 with success: false and an error message. Omit cursor to start again.
  • A cursor continues toward older records. Start a new traversal without cursor when checking for newly available jobs.
  • Deduplicate stored jobs by id. A job leaving the 7-day window can still be open; its absence from the feed does not indicate closure.
  • Cursors are not API keys. Public requests need no authentication. For Commercial access, send Authorization: Bearer API_KEY on every page; existing per-key billing rules apply only to returned jobs.
  • cursor is supported by the REST jobs feed, not by the get=locations or get=industries requests.

JavaScript: retrieve all available pages

const params = new URLSearchParams({
  count: "100",
  geo: "usa",
  industry: "engineering",
});
let nextCursor = null;

do {
  if (nextCursor) {
    params.set("cursor", nextCursor);
  }

  const response = await fetch(
    `https://jobicy.com/api/jobs?${params}`,
    { headers: { Accept: "application/json" } }
  );
  const data = await response.json();

  if (!response.ok || data.success === false) {
    throw new Error(data.error || `HTTP ${response.status}`);
  }

  for (const job of data.jobs) {
    console.log(job);
  }

  nextCursor = data.nextCursor;
} while (nextCursor);

Python: retrieve all available pages

import requests

params = {"count": 100, "geo": "europe", "industry": "marketing"}

while True:
    response = requests.get(
        "https://jobicy.com/api/jobs",
        params=params,
        headers={"Accept": "application/json"},
        timeout=30,
    )
    response.raise_for_status()
    data = response.json()

    if data.get("success") is False:
        raise RuntimeError(data.get("error", "API request failed"))

    for job in data["jobs"]:
        print(job)

    next_cursor = data.get("nextCursor")
    if not next_cursor:
        break

    params["cursor"] = next_cursor

Batch Status Check

Use stored Jobicy IDs to check whether listings are still open without downloading descriptions again:

GET https://jobicy.com/api/jobs/status?ids=123456,123457,123458
curl --fail-with-body --max-time 30 "https://jobicy.com/api/jobs/status?ids=123456,123457,123458"

Illustrative response; these IDs are placeholders:

{
  "apiVersion": "2.2.18",
  "checkedAt": "2026-10-01T12:00:00+00:00",
  "count": 3,
  "jobs": [
    {"id": 123456, "status": "active"},
    {"id": 123457, "status": "closed"},
    {"id": 123458, "status": "unknown"}
  ],
  "statusCode": 200,
  "success": true
}
Status Meaning
active A public Jobicy listing that is open, regardless of its publication date.
closed A listing marked expired, filled, or past its valid expiration date.
unknown The ID is missing, deleted, not public, password protected, or excluded from the API. This does not confirm closure.
  • ids is required: 1–100 comma-separated positive integer IDs, each no greater than 9007199254740991. Use IDs returned by Jobicy, without signs or leading zeros. Surrounding whitespace is ignored.
  • The 100-ID limit counts supplied values before deduplication. Each distinct ID is returned once, in first-occurrence order; count is the number of returned records.
  • A malformed ID or unsupported parameter rejects the entire request with HTTP 400. Only GET is supported; other methods return HTTP 405 with Allow: GET. Even an all-unknown result returns HTTP 200.
  • This endpoint is independent of the feed's seven-day publication window. A job dropping out of the feed does not imply it has closed. Split larger stored lists into batches of at most 100 IDs.
  • Status reflects Jobicy's records, not a live request to a third-party applicant tracking system. checkedAt is the check time in UTC; cached public responses can be up to 60 seconds old.
  • No API key is required. Checking statuses is free for public and Commercial API users. An optional Authorization: Bearer API_KEY uses normal key, account, and IP checks and adds total_request_cost: 0; it does not charge the wallet or mark jobs as purchased. Authorized responses use private, no-store.
  • Respect API rate limits and retry HTTP 429 according to Retry-After when provided. Keep unknown separate from closed, and do not convert request failures into job closures.

JavaScript:

const ids = [123456, 123457, 123458];
const url = new URL("https://jobicy.com/api/jobs/status");
url.searchParams.set("ids", ids.join(","));
const response = await fetch(url, { signal: AbortSignal.timeout(15000) });
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data.jobs);

Python:

response = requests.get(
    "https://jobicy.com/api/jobs/status",
    params={"ids": "123456,123457,123458"},
    timeout=30,
)
response.raise_for_status()
print(response.json()["jobs"])

Runnable Node.js, Python, PHP, and cURL examples are in examples/status.*. The reusable Node.js and Python clients validate ID batches and returned statuses.

Taxonomies

Retrieve the current filter values before storing location or category slugs in a production integration:

https://jobicy.com/api/jobs?get=locations
https://jobicy.com/api/jobs?get=industries

Use the returned geoSlug and industrySlug values instead of maintaining hardcoded taxonomy lists. Available locations and industries can change as Jobicy expands its coverage.

The following deprecated category slugs remain supported for backward compatibility:

Deprecated slug Current slug
dev engineering
e-commerce management
video-audio-production design-multimedia
translation-localization copywriting
smm marketing

Response Fields

The response contains page metadata and a jobs array.

Response field Type Description
jobs array Jobs returned on this page.
jobCount integer Number of jobs returned on this page, not the total available.
nextCursor string or null Continuation token for the next request. null means there is no next page in this response.
hasMore boolean Whether another matching job was available when this page was generated.
lastUpdate date-time or empty string Publication date of the newest job on this page; empty when no jobs match.
appliedFilters object Applied page size, filters, and incoming cursor when supplied.
apiVersion string API version.
success boolean true for a successful response; false for an error response.
statusCode integer HTTP status included in successful responses. Errors contain success: false and error.

Each job can contain the following fields:

Field Type Description
id integer Unique Jobicy job ID.
url string Canonical Jobicy job URL.
jobSlug string Job identifier and URL slug.
jobTitle string Job title.
companyName string Company name.
companyLogo string Company logo URL when available.
jobIndustry array Job category names.
jobType array Employment types, such as full-time, contract, part-time, or internship.
jobGeo string Geographic employment restriction, or Anywhere when no region is specified.
jobLevel string Seniority level, or Any when no level is specified.
jobExcerpt string Job description excerpt of up to 55 words.
jobDescription HTML string Full job description in HTML.
pubDate date-time Publication date and time in ISO 8601 format.
salaryMin number Minimum salary when available.
salaryMax number Maximum salary when available.
salaryCurrency string ISO 4217 salary currency code when available.
salaryPeriod string Salary interval, such as hourly, monthly, or yearly, when available.

Example response: a final page with one matching job. The dates and listing below are illustrative.

{
  "apiVersion": "2.2.18",
  "documentationUrl": "https://jobi.cy/apidocs",
  "jobCount": 1,
  "lastUpdate": "2026-09-30T12:00:00+00:00",
  "nextCursor": null,
  "hasMore": false,
  "appliedFilters": {"count": 100},
  "jobs": [
    {
      "id": 123456,
      "url": "https://jobicy.com/jobs/example-role",
      "jobSlug": "123456-example-role",
      "jobTitle": "Senior Product Designer",
      "companyName": "Example Company",
      "companyLogo": "https://example.com/logo.png",
      "jobIndustry": ["Creative & Design"],
      "jobType": ["Full-Time"],
      "jobGeo": "Anywhere",
      "jobLevel": "Senior",
      "jobExcerpt": "A short summary of the role and its main responsibilities.",
      "jobDescription": "<p>Complete HTML job description</p>",
      "pubDate": "2026-09-30T12:00:00+00:00",
      "salaryMin": 90000,
      "salaryMax": 125000,
      "salaryCurrency": "USD",
      "salaryPeriod": "yearly"
    }
  ],
  "statusCode": 200,
  "success": true
}

Optional fields can be absent or empty when an employer has not supplied the corresponding information.

API Examples

Latest 20 jobs mentioning Python:

https://jobicy.com/api/jobs?count=20&tag=python

Latest 15 jobs available in Canada:

https://jobicy.com/api/jobs?count=15&geo=canada

Latest 30 Content & Editorial jobs available in the USA:

https://jobicy.com/api/jobs?count=30&geo=usa&industry=copywriting

Latest 10 Customer Support & Success jobs:

https://jobicy.com/api/jobs?count=10&industry=supporting

Latest 10 jobs explicitly available anywhere:

https://jobicy.com/api/jobs?count=10&geo=anywhere

Production Recommendations

  • Check the HTTP status before parsing the response.
  • Discover current filter slugs through the taxonomy endpoints.
  • Treat salary and other optional fields as nullable.
  • Treat jobDescription as HTML and sanitize it according to the security rules of your application before rendering it.
  • Preserve the canonical Jobicy url when displaying or referencing a listing.
  • Cache responses where appropriate and avoid unnecessary repeated requests.
  • Handle an empty jobs array as a valid response and allow users to broaden their filters.
  • Follow nextCursor sequentially to complete a synchronization pass; stop when it is null.
  • Store jobs by id to avoid duplicates, and handle HTTP 400 cursor errors by starting a new traversal.
  • Start each new synchronization pass without a cursor to discover newly available jobs.
  • Do not schedule new automated synchronization passes more frequently than once per hour.

MCP Server for AI Agents

The public Jobicy MCP server allows compatible AI assistants, autonomous agents, IDEs, and other MCP clients to discover valid filters and retrieve current remote job listings as structured tool results.

The recommended agent behavior is to discover valid taxonomy values first and then call get_jobs with only the filters required by the user.

MCP Endpoints

Primary endpoint:

https://jobicy.com/mcp

Discovery document:

https://jobicy.com/.well-known/mcp.json

Legacy SSE endpoint:

https://jobicy.com/mcp/sse

Use the primary endpoint for new integrations. The legacy SSE endpoint is provided for older clients that do not support the primary remote MCP transport.

MCP Configuration

Many MCP clients accept a configuration similar to the following:

{
  "mcpServers": {
    "jobicy-jobs": {
      "url": "https://jobicy.com/mcp"
    }
  }
}

The exact configuration location and property names can vary by client. Authentication credentials are not required for the public Jobicy MCP endpoint.

Available MCP Tools

get_jobs

Returns current remote job listings.

Parameter Type Required Description
count number No Number of listings to return. Range: 1–200; default: 200.
geo string No Geographic region slug, such as europe, usa, apac, or anywhere.
industry string No Job category slug, such as engineering, marketing, or seo.
tag string No Keyword search across available job content.

get_taxonomies

Returns current location or category values that can be used with get_jobs.

Parameter Type Required Description
type string Yes Must be either locations or industries.

Recommended Agent Workflow

  1. Interpret the user's requested role, skills, and geographic eligibility.
  2. Call get_taxonomies with type: "industries" when an industry filter is needed.
  3. Call get_taxonomies with type: "locations" when a geographic filter is needed.
  4. Select exact returned slugs instead of inventing or guessing filter values.
  5. Call get_jobs with the smallest useful count and only the required filters.
  6. Present the job title, company, eligibility, employment type, salary when available, and canonical Jobicy URL.
  7. If no jobs match, explain which filters were used and ask before broadening or removing a material constraint.

Example Tool Calls

MCP clients display and transmit tool calls differently. The following examples show the intended tool names and arguments.

Discover valid industries:

{
  "name": "get_taxonomies",
  "arguments": {
    "type": "industries"
  }
}

Discover valid locations:

{
  "name": "get_taxonomies",
  "arguments": {
    "type": "locations"
  }
}

Find up to 10 Python engineering jobs available in Europe:

{
  "name": "get_jobs",
  "arguments": {
    "count": 10,
    "geo": "europe",
    "industry": "engineering",
    "tag": "python"
  }
}

Find up to 5 SEO jobs without restricting the location:

{
  "name": "get_jobs",
  "arguments": {
    "count": 5,
    "industry": "seo"
  }
}

Example Prompt for an AI Agent

Use the Jobicy MCP server to find up to 10 current remote Software Engineering jobs available to applicants in Europe that mention Python. Query the Jobicy taxonomy tools before applying filters. Return the title, company, location eligibility, employment type, salary when available, publication date, and canonical Jobicy link. Do not invent missing salary information or broaden the location restriction without asking me.

Recommended reusable agent instruction:

When searching Jobicy, use get_taxonomies to discover valid location and industry slugs before calling get_jobs. Preserve the canonical Jobicy URL, distinguish missing values from confirmed values, sanitize HTML before rendering jobDescription, and state which filters were applied. If no results match, ask before removing a user constraint.

RSS Feed

Jobicy provides a public RSS feed for readers, publishing workflows, and automation services that do not require a JSON integration.

Feed URLs

Canonical feed for new integrations:

https://jobicy.com/jobs/feed

Legacy feed retained for compatibility:

https://jobicy.com/feed/job_feed

RSS Parameters

The preferred RSS parameters match the REST API. Legacy parameter names remain supported.

Preferred parameter Legacy parameter Description
industry job_categories Category slug or comma-separated category slugs.
type job_types Employment type, such as full-time, freelance, contract, or part-time.
tag search_keywords Keyword search.
geo search_region Geographic eligibility slug.

Retrieve current category and location slugs from:

https://jobicy.com/api/jobs?get=industries
https://jobicy.com/api/jobs?get=locations

Example using the preferred parameters:

https://jobicy.com/jobs/feed?industry=supporting&type=full-time&geo=usa

Output: Full-time Customer Support & Success jobs available in the USA.

Automated polling must not run more frequently than once per hour; a few checks per day are normally sufficient.

Embeddable Widget

Add a live remote jobs search interface to a website without building an API client.

<div id="jobicy-widget"></div>
<script>
window.jobicyWidgetConfig = {
  query: "Developer",
  theme: "light",
  autoSearch: true,
  limit: 10
};
</script>
<script src="https://jobicy.com/api/prod/wg.js"></script>

Widget Options

Option Type Description
query string Default search term.
theme string Widget color theme: light or dark.
autoSearch boolean Whether to search automatically on load.
limit integer Number of jobs to display. Range: 1–200.

WordPress Plugin

Use the official Jobicy WordPress plugin to display current remote jobs on a WordPress website.

[jobicy_jobs]

IFTTT Applets

Jobicy applets can automatically publish new remote jobs to:

  • LinkedIn
  • X
  • Facebook
  • Telegram
  • Slack
  • Discord
  • WordPress

Browse available applets: ifttt.com/job

Fair Use

The Jobicy API, MCP server, and RSS feeds are designed for websites, applications, newsletters, research tools, AI products, job boards, internal applications, and other services that help users discover remote work opportunities.

  1. You may use Jobicy listings in your own products and user experiences without requesting individual permission.
  2. Keep Jobicy as the original source and preserve the canonical Jobicy job URL when displaying a listing.
  3. You may create your own interfaces, summaries, categories, search experiences, and additional context around listings.
  4. Do not present Jobicy listings as your own original job postings or remove source attribution.
  5. Cache responses where appropriate and do not start new automated polling or synchronization passes more frequently than once per hour. Cursor requests may be made sequentially to complete an API synchronization pass.
  6. Do not use Jobicy data to create spam networks, misleading job databases, or services that negatively affect employers, candidates, or platform stability.
  7. Excessive requests, intentional overloading, content misrepresentation, or abusive activity may result in restricted access.

Normal integrations do not require a separate agreement. Contact Jobicy for high-volume commercial partnerships or custom data arrangements.

License

The code and examples in this repository are available under the MIT License.

The MIT License applies to the repository code and examples. It does not transfer ownership of Jobicy job listings, employer content, logos, or other third-party data. Use of data returned by Jobicy services remains subject to the Fair Use rules above.

Why Jobicy?

  • Curated remote jobs
  • Worldwide coverage
  • Structured JSON
  • MCP support for AI agents
  • Filtered RSS feeds
  • Free public access
  • No API key required

from github.com/Jobicy/remote-jobs-api

Установка Remote Jobs MCP

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/Jobicy/remote-jobs-api

FAQ

Remote Jobs MCP MCP бесплатный?

Да, Remote Jobs MCP MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Remote Jobs MCP?

Нет, Remote Jobs MCP работает без API-ключей и переменных окружения.

Remote Jobs MCP — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Remote Jobs MCP в Claude Desktop, Claude Code или Cursor?

Открой Remote Jobs MCP на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development