# SBIR & STTR Award Scraper - Funded R\&D Company Leads (`scrapesage/sbir-sttr-award-scraper`) Actor

Scrape the official SBIR.gov award database (SBIR + STTR): company, website, address, business contact + principal investigator names, titles, emails & phones, award amount, agency, phase & demographics. Filter by agency, state, phase, year & keyword. B2B leads + monitoring. No browser, no API key.

- **URL**: https://apify.com/scrapesage/sbir-sttr-award-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 sbir/sttr award / company leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## SBIR & STTR Award Scraper — Funded R&D Company Leads

Extract the **complete SBIR & STTR award database** from the official **[SBIR.gov](https://www.sbir.gov)** open data — every federal Small Business Innovation Research (SBIR) and Small Business Technology Transfer (STTR) award, with the **funded company**, the **award economics**, and the **decision-maker contacts** that make each award a ready-to-use B2B lead.

Every record carries the **company name, website and full address**, the **award** (program, phase, agency, branch, dollar amount, topic, dates), and **two named contacts** — the **business/company contact** and the **Principal Investigator** — each with **title, email and phone**, plus the partner **research institution** (for STTR), set-aside ownership flags, the full project abstract and a derived **lead score**.

No login, no cookies, no browser, no API key — fast, reliable extraction straight from the government bulk dataset, refreshed by SBIR.gov on an ongoing basis.

### Why this SBIR/STTR scraper?

A company that just won federal R&D money is a **high-intent B2B lead**: it's funded, it's hiring, and it's buying. Generic exporters dump a few API fields and miss the contact data that turns an award into outreach. This actor ships the **richest record in the category** — the full firmographics **and** the named business contact **and** the Principal Investigator, with emails and phones for both.

| Data | Generic SBIR exporters | This actor |
|---|---|---|
| Company, agency, phase, amount, year | ✅ | ✅ |
| Company **website** + full mailing address | partial | ✅ |
| **Business contact** name, title, **email**, phone | ❌ | ✅ |
| **Principal Investigator** name, title, **email**, phone | partial | ✅ |
| Partner **research institution** + POC (STTR) | ❌ | ✅ |
| Set-aside flags (woman-owned / HUBZone / disadvantaged) | partial | ✅ |
| Employees, DUNS, topic code, solicitation, contract # | partial | ✅ |
| Full project **abstract** | ❌ | ✅ |
| **Lead score** (contactability + recency + phase + size) | ❌ | ✅ |
| Filter by agency, phase, state, year, amount, keyword | partial | ✅ |
| **Monitoring mode** — only newly-funded companies | ❌ | ✅ |

### Use cases

- **B2B sales & lead generation** — newly-funded R&D companies are in-market buyers. Export them with email, phone, website and award size and drop them straight into your CRM or outreach sequence.
- **Government-contracting business development** — find subcontractors, teaming partners and primes by agency, branch, topic and technology.
- **Recruiting & talent** — Phase II winners are scaling and hiring engineers and scientists; the PI is the technical decision-maker.
- **Investors & M&A** — track non-dilutive-funded deep-tech startups by technology, geography and award trajectory.
- **Professional services** — IP/patent attorneys, accountants, grant consultants and R&D tax-credit firms can target firms by funding stage and agency.
- **Market & competitive research** — map who is winning R&D funding in AI, batteries, biotech, defense, space and more, by agency and over time.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **SBIR & STTR Award Scraper**, set your filters (e.g. agency `Defense`, state `MA`, `awardYearFrom: 2023`, `withEmail: true`), and pick how many results you want.
3. Click **Start** and watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "agencies": ["Defense"],
    "states": ["MA"],
    "phases": ["Phase II"],
    "awardYearFrom": 2023,
    "withEmail": true,
    "sortBy": "newest",
    "maxResults": 500
}
````

All filters are optional and combine with **AND**. Highlights:

- **programs** — `SBIR`, `STTR`, or both (empty = both).
- **phases** — `Phase I` (feasibility) and/or `Phase II` (development; proven, larger awards).
- **agencies** — match the funding agency by keyword: `Defense`, `Health` (HHS/NIH), `Energy`, `Homeland Security`, `Aeronautics` (NASA), `Science Foundation` (NSF), `Agriculture`, `Commerce`, `Education`, `Transportation`, `Environmental`.
- **branches** — sub-agency contains: `Navy`, `Air Force`, `Army`, `DARPA`, `NIH`, `ARPA-E`, `NOAA`, `NIST`…
- **keywords** — match any term in the **title or abstract** (e.g. `artificial intelligence`, `battery`, `hypersonic`, `quantum`) to build a technology-specific list.
- **states / cities / zipCodes** — locate companies geographically.
- **awardYearFrom / awardYearTo**, **minAwardAmount / maxAwardAmount**, **awardedAfter / awardedBefore** — funding window and dollar size.
- **minEmployees / maxEmployees**, **womenOwnedOnly / hubZoneOwnedOnly / disadvantagedOnly**, **researchInstitutionQuery** — company size, set-aside status and STTR partner.
- **withEmail / withPhone / withWebsite** — keep only contactable records.
- **sortBy** — `newest` (recommended; fastest & cheapest), `awardAmountHigh`, `awardAmountLow`, `oldest`.
- **monitorMode / monitorKey** — return only awards new since the last run (see below).
- **maxResults**, **deduplicateResults**, **proxyConfiguration**.

> **Tip:** `sortBy: "newest"` streams the file in its native newest-first order and stops as soon as it has enough matches — so a targeted run reads only a few MB. The other sort orders scan the entire dataset to sort globally.

### Output

By default you get one clean, dense table — every column applies to every row. The dataset ships three ready-made **views**: **Awards**, **Company leads**, and **Contacts (business + PI)**.

An award record:

```json
{
    "recordType": "award",
    "company": "ATA ENGINEERING, INC.",
    "companyWebsite": "http://www.ata-e.com",
    "duns": "...",
    "numberEmployees": 205,
    "womenOwned": false,
    "hubZoneOwned": false,
    "sociallyEconomicallyDisadvantaged": false,
    "setAsides": [],
    "address1": "...",
    "city": "San Diego",
    "state": "CA",
    "zip": "92128-4695",
    "zipCode": "92128",
    "country": "US",
    "fullAddress": "..., San Diego, CA, 92128-4695",
    "program": "STTR",
    "phase": "Phase II",
    "phaseNumber": 2,
    "agency": "Department of Defense",
    "branch": "Navy",
    "awardTitle": "…",
    "awardYear": 2024,
    "awardAmount": 997409,
    "awardAmountText": "997,409",
    "awardTier": "mid",
    "contractNumber": "N68335-24-C-0081",
    "agencyTrackingNumber": "…",
    "topicCode": "N22A-T016",
    "solicitationNumber": "…",
    "solicitationYear": 2022,
    "proposalAwardDate": "2023-10-23",
    "contractEndDate": "2025-10-30",
    "dateOfNotification": "2023-05-05",
    "contactName": "Heather Wilkens",
    "contactTitle": "…",
    "contactPhone": "(858) 480-2043",
    "contactEmail": "hwilkens@ata-e.com",
    "piName": "Timothy Palmer",
    "piTitle": "…",
    "piPhone": "(585) 480-2066",
    "piEmail": "tim.palmer@ata-e.com",
    "primaryEmail": "hwilkens@ata-e.com",
    "primaryPhone": "(858) 480-2043",
    "researchInstitution": "University of Arkansas",
    "riPocName": "…",
    "riPocPhone": "…",
    "abstract": "…full project abstract…",
    "hasEmail": true,
    "hasPhone": true,
    "hasWebsite": true,
    "isPhaseII": true,
    "isSttr": true,
    "leadScore": 86,
    "dataAsOf": "2026-01-01",
    "scrapedAt": "2026-06-20T13:00:00.000Z"
}
```

#### What to expect (field coverage)

SBIR.gov is government-entered data. Award economics, company and location are essentially always present; contact richness is highest for **recent** awards (which is exactly what `sortBy: "newest"` returns). Older awards (1980s–2000s) often have placeholder or missing contacts — those are cleaned to `null`, never faked.

| Field group | Coverage on recent awards |
|---|---|
| Company, agency, program, phase, amount, year, address | ~100% |
| Company website | high |
| Business contact name + **email** + phone | high |
| Principal Investigator name + **email** + phone | high |
| Research institution (STTR awards) | present on STTR |
| Set-aside flags, employees, DUNS, topic, abstract | high |

A blank field means SBIR.gov didn't publish it for that award — not that scraping failed. Nothing is dropped, so you always get the richest dataset available.

### Monitoring mode — only newly-funded companies

Turn on **`monitorMode`** and the actor remembers every award it has already returned (in a named key-value store) and, on the next run, emits **only awards that are new** since last time — each tagged `monitorEvent: "new"`. Because the file is newest-first, fresh awards surface at the top.

This is **orthogonal to [Apify Schedules](https://docs.apify.com/platform/schedules)**: the Schedule *starts* the run on your cadence (say, weekly); monitoring mode decides *what's new*. Use a distinct `monitorKey` per saved watch (e.g. one per agency or state) so different monitors keep separate memory. The result: a clean, de-duplicated feed of newly-funded R\&D companies dropped straight into your CRM.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it weekly with `monitorMode` to capture new awards as fresh leads.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/sbir-sttr-award-scraper').call({
    agencies: ['Defense'],
    states: ['MA'],
    awardYearFrom: 2023,
    withEmail: true,
    maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} SBIR/STTR awards`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new award leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored agency or state has new awards.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "list every Phase II SBIR award in Massachusetts since 2023 with the company email" and let it run the scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More US-B2B & funding-data scrapers from scrapesage

Build a complete **funded-company & federal-money lead-gen stack**:

- **[SEC Form D Scraper](https://apify.com/scrapesage/sec-form-d-funding-scraper)** — private-placement & Reg CF crowdfunding leads (issuers, offering amounts, named execs).
- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — 7(a) & 504 financed small businesses.
- **[PPP Loan Data Scraper](https://apify.com/scrapesage/ppp-loan-data-scraper)** — ~11.5M PPP loans with owner demographics & jobs.
- **[U.S. Federal Grants Scraper](https://apify.com/scrapesage/us-federal-grants-scraper)** — grant opportunities from Grants.gov.
- **[USAspending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal contract & assistance awards.
- **[GSA eLibrary Scraper](https://apify.com/scrapesage/gsa-elibrary-scraper)** — GSA Schedule contractors & SINs.
- **[SAM.gov Scraper](https://apify.com/scrapesage/sam-gov-scraper)** — federal entity registrations.
- **[Form 5500 ERISA Scraper](https://apify.com/scrapesage/form-5500-erisa-scraper)** — 401(k) & benefit-plan leads.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly-registered companies.
- **[FAA Aircraft Registry Scraper](https://apify.com/scrapesage/faa-aircraft-registry-scraper)** — aircraft owner leads.
- **[Nonprofit & IRS 990 Scraper](https://apify.com/scrapesage/nonprofit-990-scraper)** — nonprofit firmographics, financials & officers.

### FAQ

**Where does the data come from?** The official SBIR.gov public award dataset (every SBIR & STTR award, all 11 participating agencies, going back to the 1980s), downloaded directly as the government bulk file.

**Does it need the SBIR API or a key?** No. This actor reads the public bulk award file directly — no key, no login, no browser — which is also far more reliable than the rate-limited public API.

**Why are some old awards missing emails/phones?** Contact fields are richest on recent awards. SBIR.gov stores placeholder values (e.g. `() -`) for missing contacts on older records; the actor cleans those to `null` rather than emitting junk. Use `sortBy: "newest"` and `withEmail: true` for the cleanest lead list.

**What's the difference between SBIR and STTR?** Both fund small-business R\&D. STTR additionally requires a partnership with a research institution (university or federal lab), which appears in the `researchInstitution` field.

**Can I export to Google Sheets, CSV or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I get only newly-funded companies?** Turn on `monitorMode` and run on a [Schedule](https://docs.apify.com/platform/schedules) — you'll get only awards added since the last run.

**Is scraping this legal?** This actor collects publicly available U.S. government open data. You're responsible for using the data in compliance with applicable laws (e.g. CAN-SPAM/CCPA for outreach).

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `programs` (type: `array`):

Limit to the SBIR program, the STTR program, or both. Leave empty for both. STTR awards always involve a research institution (university / lab) partner.

## `phases` (type: `array`):

Phase I = feasibility (~$50k–$300k). Phase II = development (~$0.5M–$2M+, proven companies). Leave empty for all phases.

## `agencies` (type: `array`):

Filter by funding agency — case-insensitive, matches anywhere in the agency name. Type a keyword such as <code>Defense</code>, <code>Health</code> (HHS/NIH), <code>Energy</code>, <code>Homeland Security</code>, <code>Aeronautics</code> (NASA), <code>Science Foundation</code> (NSF), <code>Agriculture</code>, <code>Commerce</code>, <code>Education</code>, <code>Transportation</code> or <code>Environmental</code>. Leave empty for all agencies.

## `branches` (type: `array`):

Filter by branch within an agency (case-insensitive contains), e.g. <code>Navy</code>, <code>Air Force</code>, <code>Army</code>, <code>DARPA</code>, <code>NIH</code>, <code>ARPA-E</code>, <code>NOAA</code>, <code>NIST</code>. Leave empty for all.

## `keywords` (type: `array`):

Only awards whose title or abstract contains ANY of these terms (case-insensitive), e.g. <code>artificial intelligence</code>, <code>battery</code>, <code>biosensor</code>, <code>hypersonic</code>, <code>quantum</code>. Great for building a technology-specific prospect list.

## `companyNameQuery` (type: `string`):

Only awards whose company name contains this text (case-insensitive), e.g. <code>robotics</code> or a specific firm name.

## `topicCode` (type: `string`):

Filter by the solicitation topic code (case-insensitive contains), e.g. <code>AF</code>, <code>N22A-T016</code>, <code>DHS241</code>.

## `states` (type: `array`):

Filter by the company's state — two-letter USPS codes, e.g. <code>CA</code>, <code>TX</code>, <code>MA</code>, <code>VA</code>. Leave empty for all states & territories.

## `cities` (type: `array`):

Filter by the company's city (case-insensitive, exact city name), e.g. <code>Cambridge</code>, <code>San Diego</code>, <code>Austin</code>.

## `zipCodes` (type: `array`):

Filter by ZIP — full ZIP (<code>02139</code>) or a prefix (<code>021</code> matches all 021xx). The 5-digit ZIP is used for matching.

## `awardYearFrom` (type: `integer`):

Only awards from this fiscal year onward (e.g. <code>2022</code>). Recent awards make the freshest leads.

## `awardYearTo` (type: `integer`):

Only awards up to and including this fiscal year.

## `minAwardAmount` (type: `integer`):

Only awards of at least this dollar amount. Set to e.g. <code>500000</code> to target Phase II / well-funded companies.

## `maxAwardAmount` (type: `integer`):

Only awards up to this dollar amount.

## `awardedAfter` (type: `string`):

Only awards with a proposal award date on or after this date, <code>YYYY-MM-DD</code>. Best for capturing recently-funded companies.

## `awardedBefore` (type: `string`):

Only awards with a proposal award date on or before this date, <code>YYYY-MM-DD</code>.

## `minEmployees` (type: `integer`):

Only companies reporting at least this many employees.

## `maxEmployees` (type: `integer`):

Only companies reporting at most this many employees.

## `researchInstitutionQuery` (type: `string`):

Only awards whose partner research institution (mostly STTR) contains this text (case-insensitive), e.g. <code>MIT</code>, <code>Stanford</code>, <code>Georgia Tech</code>.

## `womenOwnedOnly` (type: `boolean`):

Only companies flagged as woman-owned.

## `hubZoneOwnedOnly` (type: `boolean`):

Only companies flagged as HUBZone-owned.

## `disadvantagedOnly` (type: `boolean`):

Only companies flagged as socially and economically disadvantaged-owned.

## `withEmail` (type: `boolean`):

Keep only records that have a business contact OR principal-investigator email — recommended for a clean, contactable lead list.

## `withPhone` (type: `boolean`):

Keep only records with a contact or PI phone number.

## `withWebsite` (type: `boolean`):

Keep only records that have a company website.

## `maxResults` (type: `integer`):

Maximum number of award records to return in this run.

## `sortBy` (type: `string`):

<b>Newest first</b> streams the file in its native newest-first order and stops as soon as it has enough matches — by far the fastest & cheapest. The other orders scan the entire ~370 MB file to sort globally.

## `deduplicateResults` (type: `boolean`):

Skip duplicate awards within this run (recommended).

## `monitorMode` (type: `boolean`):

Remember which awards were already returned (in a named key-value store) and emit ONLY awards that are new since the last run — each tagged <code>monitorEvent: "new"</code>. SBIR.gov refreshes regularly; run on a Schedule to capture newly-funded companies as fresh leads. Works alongside Apify Schedules (the schedule starts the run; monitoring decides what's new).

## `monitorKey` (type: `string`):

Names the memory used by monitoring mode. Use a distinct key per saved watch (e.g. per agency or state) so different monitors don't share state.

## `proxyConfiguration` (type: `object`):

Optional proxy. The SBIR.gov bulk file is downloaded directly and needs no proxy — leave this off for the fastest download. Enable Apify Proxy only if your network requires it.

## Actor input object example

```json
{
  "agencies": [
    "Defense"
  ],
  "states": [
    "MA"
  ],
  "womenOwnedOnly": false,
  "hubZoneOwnedOnly": false,
  "disadvantagedOnly": false,
  "withEmail": false,
  "withPhone": false,
  "withWebsite": false,
  "maxResults": 1000,
  "sortBy": "newest",
  "deduplicateResults": true,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped SBIR/STTR award records in the default dataset, each with the funded company, contacts, award economics and a lead score.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "agencies": [
        "Defense"
    ],
    "states": [
        "MA"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/sbir-sttr-award-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "agencies": ["Defense"],
    "states": ["MA"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/sbir-sttr-award-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "agencies": [
    "Defense"
  ],
  "states": [
    "MA"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapesage/sbir-sttr-award-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/sbir-sttr-award-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SBIR & STTR Award Scraper - Funded R&D Company Leads",
        "description": "Scrape the official SBIR.gov award database (SBIR + STTR): company, website, address, business contact + principal investigator names, titles, emails & phones, award amount, agency, phase & demographics. Filter by agency, state, phase, year & keyword. B2B leads + monitoring. No browser, no API key.",
        "version": "0.1",
        "x-build-id": "pn4iqvyRJgZTw7Wrd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesage~sbir-sttr-award-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesage-sbir-sttr-award-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapesage~sbir-sttr-award-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesage-sbir-sttr-award-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapesage~sbir-sttr-award-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesage-sbir-sttr-award-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "programs": {
                        "title": "Program (SBIR / STTR)",
                        "type": "array",
                        "description": "Limit to the SBIR program, the STTR program, or both. Leave empty for both. STTR awards always involve a research institution (university / lab) partner.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "SBIR",
                                "STTR"
                            ],
                            "enumTitles": [
                                "SBIR",
                                "STTR"
                            ]
                        }
                    },
                    "phases": {
                        "title": "Phase",
                        "type": "array",
                        "description": "Phase I = feasibility (~$50k–$300k). Phase II = development (~$0.5M–$2M+, proven companies). Leave empty for all phases.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Phase I",
                                "Phase II"
                            ],
                            "enumTitles": [
                                "Phase I",
                                "Phase II"
                            ]
                        }
                    },
                    "agencies": {
                        "title": "Funding agencies",
                        "type": "array",
                        "description": "Filter by funding agency — case-insensitive, matches anywhere in the agency name. Type a keyword such as <code>Defense</code>, <code>Health</code> (HHS/NIH), <code>Energy</code>, <code>Homeland Security</code>, <code>Aeronautics</code> (NASA), <code>Science Foundation</code> (NSF), <code>Agriculture</code>, <code>Commerce</code>, <code>Education</code>, <code>Transportation</code> or <code>Environmental</code>. Leave empty for all agencies.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "branches": {
                        "title": "Branch / sub-agency",
                        "type": "array",
                        "description": "Filter by branch within an agency (case-insensitive contains), e.g. <code>Navy</code>, <code>Air Force</code>, <code>Army</code>, <code>DARPA</code>, <code>NIH</code>, <code>ARPA-E</code>, <code>NOAA</code>, <code>NIST</code>. Leave empty for all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywords": {
                        "title": "Keywords (title + abstract)",
                        "type": "array",
                        "description": "Only awards whose title or abstract contains ANY of these terms (case-insensitive), e.g. <code>artificial intelligence</code>, <code>battery</code>, <code>biosensor</code>, <code>hypersonic</code>, <code>quantum</code>. Great for building a technology-specific prospect list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyNameQuery": {
                        "title": "Company name contains",
                        "type": "string",
                        "description": "Only awards whose company name contains this text (case-insensitive), e.g. <code>robotics</code> or a specific firm name."
                    },
                    "topicCode": {
                        "title": "Topic code contains",
                        "type": "string",
                        "description": "Filter by the solicitation topic code (case-insensitive contains), e.g. <code>AF</code>, <code>N22A-T016</code>, <code>DHS241</code>."
                    },
                    "states": {
                        "title": "Company states",
                        "type": "array",
                        "description": "Filter by the company's state — two-letter USPS codes, e.g. <code>CA</code>, <code>TX</code>, <code>MA</code>, <code>VA</code>. Leave empty for all states & territories.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Company cities",
                        "type": "array",
                        "description": "Filter by the company's city (case-insensitive, exact city name), e.g. <code>Cambridge</code>, <code>San Diego</code>, <code>Austin</code>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "zipCodes": {
                        "title": "ZIP codes (prefix)",
                        "type": "array",
                        "description": "Filter by ZIP — full ZIP (<code>02139</code>) or a prefix (<code>021</code> matches all 021xx). The 5-digit ZIP is used for matching.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "awardYearFrom": {
                        "title": "Award year from",
                        "type": "integer",
                        "description": "Only awards from this fiscal year onward (e.g. <code>2022</code>). Recent awards make the freshest leads."
                    },
                    "awardYearTo": {
                        "title": "Award year to",
                        "type": "integer",
                        "description": "Only awards up to and including this fiscal year."
                    },
                    "minAwardAmount": {
                        "title": "Min award amount (USD)",
                        "type": "integer",
                        "description": "Only awards of at least this dollar amount. Set to e.g. <code>500000</code> to target Phase II / well-funded companies."
                    },
                    "maxAwardAmount": {
                        "title": "Max award amount (USD)",
                        "type": "integer",
                        "description": "Only awards up to this dollar amount."
                    },
                    "awardedAfter": {
                        "title": "Awarded on/after",
                        "type": "string",
                        "description": "Only awards with a proposal award date on or after this date, <code>YYYY-MM-DD</code>. Best for capturing recently-funded companies."
                    },
                    "awardedBefore": {
                        "title": "Awarded on/before",
                        "type": "string",
                        "description": "Only awards with a proposal award date on or before this date, <code>YYYY-MM-DD</code>."
                    },
                    "minEmployees": {
                        "title": "Min employees",
                        "type": "integer",
                        "description": "Only companies reporting at least this many employees."
                    },
                    "maxEmployees": {
                        "title": "Max employees",
                        "type": "integer",
                        "description": "Only companies reporting at most this many employees."
                    },
                    "researchInstitutionQuery": {
                        "title": "Research institution contains",
                        "type": "string",
                        "description": "Only awards whose partner research institution (mostly STTR) contains this text (case-insensitive), e.g. <code>MIT</code>, <code>Stanford</code>, <code>Georgia Tech</code>."
                    },
                    "womenOwnedOnly": {
                        "title": "Women-owned only",
                        "type": "boolean",
                        "description": "Only companies flagged as woman-owned.",
                        "default": false
                    },
                    "hubZoneOwnedOnly": {
                        "title": "HUBZone-owned only",
                        "type": "boolean",
                        "description": "Only companies flagged as HUBZone-owned.",
                        "default": false
                    },
                    "disadvantagedOnly": {
                        "title": "Socially/economically disadvantaged only",
                        "type": "boolean",
                        "description": "Only companies flagged as socially and economically disadvantaged-owned.",
                        "default": false
                    },
                    "withEmail": {
                        "title": "Only awards with an email",
                        "type": "boolean",
                        "description": "Keep only records that have a business contact OR principal-investigator email — recommended for a clean, contactable lead list.",
                        "default": false
                    },
                    "withPhone": {
                        "title": "Only awards with a phone",
                        "type": "boolean",
                        "description": "Keep only records with a contact or PI phone number.",
                        "default": false
                    },
                    "withWebsite": {
                        "title": "Only awards with a company website",
                        "type": "boolean",
                        "description": "Keep only records that have a company website.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of award records to return in this run.",
                        "default": 1000
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "newest",
                            "awardAmountHigh",
                            "awardAmountLow",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "<b>Newest first</b> streams the file in its native newest-first order and stops as soon as it has enough matches — by far the fastest & cheapest. The other orders scan the entire ~370 MB file to sort globally.",
                        "default": "newest"
                    },
                    "deduplicateResults": {
                        "title": "Deduplicate within a run",
                        "type": "boolean",
                        "description": "Skip duplicate awards within this run (recommended).",
                        "default": true
                    },
                    "monitorMode": {
                        "title": "Monitoring mode — only new awards",
                        "type": "boolean",
                        "description": "Remember which awards were already returned (in a named key-value store) and emit ONLY awards that are new since the last run — each tagged <code>monitorEvent: \"new\"</code>. SBIR.gov refreshes regularly; run on a Schedule to capture newly-funded companies as fresh leads. Works alongside Apify Schedules (the schedule starts the run; monitoring decides what's new).",
                        "default": false
                    },
                    "monitorKey": {
                        "title": "Monitor key",
                        "type": "string",
                        "description": "Names the memory used by monitoring mode. Use a distinct key per saved watch (e.g. per agency or state) so different monitors don't share state.",
                        "default": "default"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy. The SBIR.gov bulk file is downloaded directly and needs no proxy — leave this off for the fastest download. Enable Apify Proxy only if your network requires it.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
