Skip to content

Latest commit

 

History

History
65 lines (48 loc) · 1.8 KB

File metadata and controls

65 lines (48 loc) · 1.8 KB

JavaScript examples — USASpending.gov Scraper

Call the hosted Actor with the official apify-client for Node.js. This calls logiover/usaspending-gov-scraper — no Actor source code is involved.

Install

npm install apify-client

Run and read results

import { 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);
}

Rank top recipients by obligated amount

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);

Export to CSV

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);

Docs: https://docs.apify.com/api/client/js/