Skip to main content

Integrations

Two transports, one set of tools. AI agents use the MCP endpoint; automation tools (n8n, Zapier, Make, Clay) use the REST endpoint. Same key, same billing. Pick the section that matches your runtime — REST recipes are below, MCP transport details are at Advanced: MCP transport.

n8n
Zapier
Slack
Discord
Telegram
Google Sheets

No agent? Use REST. Every snippet below POSTs the tool input directly to https://api.getmany.com.ua/v1/<tool>. Full REST reference (endpoints, error codes, Retry-After, credit-pool 402) lives at /docs/api.


n8n

n8n is a workflow automation tool that can call the REST API on a schedule and route results to Slack, email, Google Sheets, or any other destination.

Setup steps

  1. 1Create a new n8n workflow with a Schedule Trigger node (e.g. every 45 minutes).
  2. 2Add an HTTP Request node pointing to https://api.getmany.com.ua/v1/search_jobs.
  3. 3Set the method to POST and add the Authorization: Bearer header with your API key.
  4. 4Set the body to the tool input (limit, searchPeriod, filters) — no envelope, no wrapping.
  5. 5Add output nodes (Slack, Email, Google Sheets) and read results from $json.data.
  6. 6Activate the workflow.
n8n workflow (REST)
{
  "nodes": [
    {
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "parameters": {
        "rule": {
          "interval": [{ "field": "minutes", "minutesInterval": 45 }]
        }
      }
    },
    {
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "POST",
        "url": "https://api.getmany.com.ua/v1/search_jobs",
        "headers": {
          "Authorization": "Bearer gm_your_api_key_here",
          "Content-Type": "application/json"
        },
        "body": {
          "limit": 100,
          "searchPeriod": "1 hour",
          "jobCategories": ["Web Development"],
          "budget.hourlyRate.min": "50"
        }
      }
    },
    {
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#upwork-jobs",
        "text": "New jobs found: {{ $json.data.total }}"
      }
    }
  ]
}

Zapier / Make

Zapier and Make both support custom HTTP webhook actions. Same endpoint, same Bearer header, same tool-input body shape.

  • Zapier: “Webhooks by Zapier” → Custom Request → POST to https://api.getmany.com.ua/v1/search_jobs with the tool input as the JSON body.
  • Make: HTTP module → Make a request → POST with JSON body and Bearer auth.

Clay

Clay is a data-enrichment platform that can pull Upwork job data for lead-generation and outreach workflows.

Setup steps

  1. 1Create a new Clay table with an HTTP enrichment column.
  2. 2Set the endpoint to https://api.getmany.com.ua/v1/search_jobs.
  3. 3Add your API key as a Bearer token in the Authorization header.
  4. 4Configure the JSON body with your search parameters (limit, searchPeriod, filters).
  5. 5Map response.data fields to your Clay columns (title, budget, client info, etc.).
  6. 6Use Clay AI to score and prioritise results.

Custom code

Call the REST API directly from any programming language using standard HTTPS. The URL https://api.getmany.com.ua/v1/search_jobs in every sample below is the production base — use it as-is with your own API key.

cURL

Terminal
curl -X POST https://api.getmany.com.ua/v1/search_jobs \
  -H "Authorization: Bearer gm_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d &#39;{
    "limit": 100,
    "searchPeriod": "24 hours",
    "jobCategories": ["Web Development"],
    "budget.hourlyRate.min": "50"
  }&#39;

Node.js / TypeScript

search-jobs.ts
const response = await fetch("https://api.getmany.com.ua/v1/search_jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer gm_your_api_key_here",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    limit: 100,
    searchPeriod: "24 hours",
    jobCategories: ["Web Development"],
    "budget.hourlyRate.min": "50"
  })
});

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

Python

search_jobs.py
import requests

response = requests.post(
    "https://api.getmany.com.ua/v1/search_jobs",
    headers={
        "Authorization": "Bearer gm_your_api_key_here",
        "Content-Type": "application/json"
    },
    json={
        "limit": 100,
        "searchPeriod": "24 hours",
        "jobCategories": ["Web Development"],
        "budget.hourlyRate.min": "50",
    }
)

print(response.json()["data"])

Tip: Switch on response.error_code (machine-readable enum), not on response.error (human message — may change). See /docs/api for the full error-code table.


Advanced: MCP transport

The same four tools are also reachable over the MCP JSON-RPC transport at https://mcp.getmany.com.ua/mcp. Use MCP if you're building an AI agent that needs tool discovery, multi-tool orchestration, or MCP sampling. For everything else — webhooks, cron jobs, BI pulls, Zapier-style automations — the REST API above is simpler and has no envelope overhead.

Node.js — JSON-RPC envelope (MCP)

mcp-call.ts
const response = await fetch("https://mcp.getmany.com.ua/mcp", {
  method: "POST",
  headers: {
    "Authorization": "Bearer gm_your_api_key_here",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search_jobs",
      "arguments": {
        "limit": 100,
        "searchPeriod": "24 hours"
      }
    }
  })
});

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

For full MCP-client setup snippets (Claude Desktop, Cursor, Cline) see /docs/setup.

Real-world recipes

Full, working search configurations you can pipe into any integration above.