Daemon Data

How to call any Daemon Data API

Every Daemon Data API is an Apify Actor. An Actor is a hosted program with a JSON input; a run produces a dataset of records you can download or read over the API. You need an Apify account (the free plan includes $5 of usage a month) and its API token from console.apify.com/account/integrations. The Actor id is data_daemon~<actor-name> in URLs, for example data_daemon~iimjobs-jobs-scraper.

One HTTP call (synchronous)

The run-sync-get-dataset-items endpoint starts a run, waits up to 300 seconds and returns the records. Add format=csv for CSV, clean=1 to drop empty fields, limit=N to cap the rows.

curl -X POST "https://api.apify.com/v2/acts/data_daemon~iimjobs-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&clean=1" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["product manager"], "locations": ["Bangalore"], "postedWithinDays": 7, "maxJobsPerQuery": 50}'

Runs longer than 300 seconds (big exports): start the run with POST /v2/acts/{id}/runs, poll GET /v2/actor-runs/{runId} until status is SUCCEEDED, then read GET /v2/datasets/{defaultDatasetId}/items. Ready-made scripts: run_sync.py, run_sync.mjs, curl.sh.

Python and Node.js

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("data_daemon/india-ipo-tracker").call(run_input={"reports": ["gmp", "subscription"], "category": "all"})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('data_daemon/dubai-property-transactions').call({ transactionGroup: 'sales', daysBack: 7, maxItems: 2000 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

One file per API, with the verified example input, is in the examples repository (python/, node/, n8n/).

Schedules and daily feeds

Save an input as a task in the Apify console, add a schedule (for example 08:00 IST daily) and connect the task's Integrations tab to Google Sheets, Slack, email or a webhook. The job-board and Gazette APIs have an only-new mode (onlyNewSinceLastRun: true): each run remembers what it delivered, in a key-value store inside your own account, and later runs return and charge only the records you have not received before. The only-new-jobs example is a complete daily loop in Python and Node.js.

n8n, Make, Zapier

Use the platform's Apify node or module with the Actor id or a saved task id. Because synchronous runs are capped at 300 seconds (and some platforms cap a step at 30 seconds), start the run asynchronously and use the "run finished" trigger to fetch the dataset. Importable n8n workflows: one per API in the examples repository, plus a Google Sheets and Slack feed.

AI assistants and agents (MCP)

Apify's hosted MCP server exposes each Actor as a tool. Add a remote MCP server with the URL https://mcp.apify.com/?tools=data_daemon/<actor-name> (several actors: separate them with commas) and the header Authorization: Bearer YOUR_APIFY_TOKEN in Claude Desktop, ChatGPT, Cursor or VS Code, then ask in plain words: "new Python jobs in Hyderabad at startups posted this week", "which IPOs are open today and what is their GMP?". The agent reads the input schema, fills it in and runs the Actor; you pay the same per-record price. Each listing is also available as plain text for agents at https://apify.com/data_daemon/<actor-name>.md, and the mcp/ folder of the examples repository holds a registry entry per actor.

Cost control

Every API has a cap field (maxJobs, maxItems, maxEvents, maxJobsPerSite). Set a maximum cost per run on the task as well; the Actor stops cleanly at the limit and says so in its status message. Records left out by your filters, by de-duplication or by only-new mode are never charged.