Call the hosted Actor with the official apify-client for Node.js. This calls logiover/usaspending-gov-scraper — no Actor source code is involved.
npm install apify-clientimport { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('logiover/usaspending-gov-scraper').call({
awardTypes: ['contracts', 'grants'],
startDate: '2026-01-01',
endDate: '2026-12-31',
keyword: 'cybersecurity',
maxAwards: 2000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Fetched ${items.length} federal awards`);
for (const a of items) {
console.log(a.recipientName, `$${a.awardAmount?.toLocaleString()}`, a.awardingAgency, a.placeOfPerformanceState);
}const run = await client.actor('logiover/usaspending-gov-scraper').call({
awardTypes: ['contracts'],
keyword: 'cloud',
maxAwards: 0,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const byRecipient = {};
for (const a of items) byRecipient[a.recipientName] = (byRecipient[a.recipientName] || 0) + (a.awardAmount || 0);
const top = Object.entries(byRecipient).sort((x, y) => y[1] - x[1]).slice(0, 10);
console.table(top);import { writeFileSync } from 'node:fs';
const run = await client.actor('logiover/usaspending-gov-scraper').call({
awardTypes: ['grants'],
state: 'CA',
maxAwards: 2000,
});
const csv = await client.dataset(run.defaultDatasetId).downloadItems('csv');
writeFileSync('federal-awards.csv', csv);