# DIBBS RFQ Scraper: DLA Solicitations by NSN, FSC and CAGE Code (`getascraper/dibbs-rfq-scraper`) Actor

Scrape DLA DIBBS RFQ solicitations by NSN, FSC, part number, CAGE code or solicitation number. Get NSN, item, quantity, issue and return-by dates, set-aside type and PDF links as JSON, CSV or Excel. Skip the slow DIBBS search screens and manual copying. Pay only $4 per 1,000 RFQs, no subscription.

- **URL**: https://apify.com/getascraper/dibbs-rfq-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 rfq records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🛡️ DIBBS RFQ Scraper: DLA Solicitations by NSN, FSC and CAGE Code

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F2F5F9;border:1px solid #D6DFEA;border-top:4px solid #1F3A5F;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Stop copying DLA solicitations one search screen at a time</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search DIBBS by NSN, FSC, CAGE code, part number or solicitation number. Get quantities, due dates, set-aside types and PDF links in a clean table you can export to JSON, CSV or Excel.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6DFEA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#152C4A">🔎 7 ways to search</span><br>
<span style="font-size:12px;color:#57534E">NSN, FSC, CAGE, part number, solicitation, PR number or item name</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6DFEA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#152C4A">🗓️ Open to full history</span><br>
<span style="font-size:12px;color:#57534E">Open now, posted today, last 15 days, or every year on file</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6DFEA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#152C4A">📎 PDF links included</span><br>
<span style="font-size:12px;color:#57534E">Solicitation PDF on every record, plus attachments when DIBBS lists them</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6DFEA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#152C4A">🔔 New-only mode</span><br>
<span style="font-size:12px;color:#57534E">On a schedule, get only solicitations you have not pulled before</span>
</td>
</tr>
</table>

**DIBBS RFQ Scraper turns the Defense Logistics Agency's Internet Bid Board System into rows you can sort, filter and quote from.** Search by the codes you already use, choose how far back to look, and export the results. No DIBBS account is needed to view solicitations, and the Actor never submits quotes or touches bidding.

### 🔍 What does DIBBS RFQ Scraper do?

DIBBS (dibbs.bsm.dla.mil) publishes the Defense Logistics Agency's requests for quotation. Its search screens show a few results at a time and offer no bulk export. This Actor runs the same searches for you and returns every match as structured data.

Each record includes the solicitation number, NSN, item description, quantity, issue and due dates, status, set-aside type, purchase request number and links to the solicitation PDF and its package page. You can narrow results to small-business, HUBZone, service-disabled veteran-owned, woman-owned or unrestricted set-asides.

### 👥 Why use DIBBS RFQ Scraper?

- **"I make parts, and I need to see new RFQs before the return-by date passes."** Search your NSNs or supply classes each morning and quote first.
- **"I resell NSN items and match RFQs against what I stock."** Pull a whole supply class into a spreadsheet and sort by quantity.
- **"I run a bid-alert or GovCon service."** Feed DIBBS solicitations into your own product on a schedule, with new-only runs to avoid duplicates.
- **"I study what the Department of Defense buys."** Use the all-history scope to analyze volumes by supply class and set-aside over the years.

### 🚀 How to use DIBBS RFQ Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F2F5F9;border:1px solid #D6DFEA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F3A5F;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your search</span><br>
<span style="font-size:12px;color:#57534E">Choose what to search by and enter an NSN, FSC, CAGE code or solicitation number.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F2F5F9;border:1px solid #D6DFEA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F3A5F;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set scope and limit</span><br>
<span style="font-size:12px;color:#57534E">Choose open, today, last 15 days or all history, and how many records you want.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F2F5F9;border:1px solid #D6DFEA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F3A5F;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run and export</span><br>
<span style="font-size:12px;color:#57534E">Download JSON, CSV or Excel, or schedule the run to get new RFQs only.</span>
</td>
</tr>
</table>

### ⚙️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| Search By | enum | No | NSN / part number, Federal Supply Class, solicitation number, purchase request, item name, approved CAGE code or approved part number. Defaults to Federal Supply Class. |
| Search Value | string | Yes | The value to look up, such as `5340` for a supply class, an NSN or a solicitation number. Defaults to `5340`. |
| Date Range / Scope | enum | No | Open RFQs, today's RFQs, the last 15 days, or all history including closed, awarded and cancelled RFQs. |
| Set-aside filters | boolean | No | Six checkboxes: small business, HUBZone, service-disabled veteran-owned, woman-owned, economically disadvantaged woman-owned, or unrestricted only. |
| Max RFQ Records | integer | No | Most records to return in one run. The default is 25. |
| Fetch Attachment/Drawing Links | boolean | No | Visits each RFQ's package page to collect drawings and attachment links. Turn it off for faster runs. |
| Max Retries Per Request | integer | No | How many times a failed request is retried on a fresh connection. |
| Delay Between Requests | integer | No | Pause in seconds between page requests, to stay gentle on a public government system. |
| Proxy Configuration | object | No | Apify datacenter proxy is on by default. |
| Only New Solicitations | boolean | No | On scheduled runs, return only solicitations not seen in earlier runs with the same key. |
| Monitor Scope | string | No | A name for this saved search, so several monitors keep separate histories. |
| Reset Seen-Solicitations Baseline | boolean | No | Forget earlier results for this key so everything counts as new again. |

### 📊 Output

Each RFQ is one row. Export it from the dataset as JSON, CSV or Excel.

```json
{
  "solicitationNumber": "SPE7L1-26-T-237W",
  "nsn": "5340-01-418-6750",
  "federalSupplyClass": "5340",
  "description": "HANDLE, MANUAL CONTR",
  "quantity": 1,
  "issueDate": "2026-03-25",
  "dueDate": "2026-09-25",
  "status": "Open",
  "setAsideType": "Unrestricted/Not Set Aside",
  "purchaseRequestNumber": "7016033348",
  "solicitationDocumentUrl": "https://dibbs2.bsm.dla.mil/Downloads/RFQ/W/SPE7L126T237W.PDF",
  "packageViewUrl": "https://www.dibbs.bsm.dla.mil/rfq/rfqrec.aspx?sn=SPE7L126T237W",
  "sourceUrl": "https://www.dibbs.bsm.dla.mil/rfq/rfqrec.aspx?sn=SPE7L126T237W",
  "scrapedAt": "2026-09-26T13:37:05.977Z"
}
```

#### Data table

| Field | Type | Description |
|---|---|---|
| `solicitationNumber` | string | The DLA solicitation number. |
| `nsn` | string | National Stock Number of the item. |
| `federalSupplyClass` | string | Four-digit Federal Supply Class. |
| `description` | string | Item name as listed by DLA. |
| `quantity` | number | Quantity requested. |
| `issueDate` | string | Date the RFQ was issued (YYYY-MM-DD). |
| `dueDate` | string | Return-by date for quotes (YYYY-MM-DD). |
| `status` | string | Current status, such as Open. |
| `setAsideType` | string | Small-business or other set-aside type. |
| `purchaseRequestNumber` | string | DLA purchase request number. |
| `solicitationDocumentUrl` | string | Link to the solicitation PDF. |
| `attachmentUrls` | array | Drawing and attachment links, when DIBBS lists any. |
| `packageViewUrl` | string | Link to the RFQ package page on DIBBS. |
| `sourceUrl` | string | The DIBBS page the record came from. |
| `scrapedAt` | string | When the record was collected. |

### 💰 Pricing

You pay per RFQ record returned. There is no subscription, and a search with no matches returns nothing to pay for. Use the maximum records setting to cap what a run can cost.

### ⭐ Enjoying DIBBS RFQ Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F2F5F9;border:1px solid #D6DFEA;border-left:5px solid #1F3A5F;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Did it save you a morning of copying solicitations by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other parts suppliers and bid-alert teams find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1F3A5F;border:1px solid #D6DFEA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/dibbs-rfq-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips

- Start with a supply class such as `5340` and a small record limit to see the shape of the data.
- Turn off attachment links when you only need the search fields. Runs finish noticeably faster.
- For a daily feed, turn on Only New Solicitations, give the search its own Monitor Scope, and schedule the run.
- Set the scope to All only when you want history. Open or Recent keeps results focused on RFQs you can still quote.

### ❓ FAQ

**Do I need a DIBBS account to use this?**
No. The Actor reads the public solicitation pages that DIBBS shows without a login. It never submits quotes, and it never touches the parts of DIBBS that require registration.

**Can I search by NSN, CAGE code or part number, not just supply class?**
Yes. Choose the search type in Search By and enter your value. NSN, part number, CAGE code, solicitation number, purchase request and item name are all supported.

**How far back does the data go?**
Set the scope to All to include closed, awarded and cancelled RFQs from earlier years. The other scopes cover open RFQs, today's RFQs, or the last 15 days.

**How do I get only new solicitations each day?**
Turn on Only New Solicitations, choose a Monitor Scope, and schedule the Actor. The first run records what it saw, and later runs return only what is new.

### 🔗 Other actors

- [GovDeals Vehicle Auction Scraper](https://apify.com/getascraper/govdeals-vehicle-auction-scraper) ↗ - Government surplus vehicle auctions with bids and closing times.
- [Municipal Surplus Auctions: Zero-Bid Listings](https://apify.com/getascraper/government-surplus-outcome-feed) ↗ - Government surplus auction listings that have drawn no bids.
- [EU TED Tender Monitor: Notices and Awards](https://apify.com/getascraper/eu-ted-tender-monitor) ↗ - European public tender notices and awards on a schedule.
- [Contractor License Verification: Multi-State](https://apify.com/getascraper/multistate-contractor-license-verifier) ↗ - Check contractor licenses across several US states.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/dibbs-rfq-scraper/changelog.md

# Actor input Schema

## `searchCategory` (type: `string`):

Which field to search DIBBS RFQs by. Options confirmed live on the real dibbs.bsm.dla.mil RFQ search form.

## `searchValue` (type: `string`):

The value to search for, matching the Search By category above (e.g. a Federal Supply Class like "5340", an NSN, or a solicitation number). A value is required: DIBBS returns no results for an empty search.

## `searchScope` (type: `string`):

Confirmed live on the real DIBBS search form: "All" is NOT limited to a recent window — it returns every RFQ on file whether open, closed, awarded, or cancelled, verified to include records going back multiple years (11,229 results for FSC 5340, oldest seen from 2017). This is unlimited history, unlike competing DIBBS scrapers that cap history at roughly 30 days.

## `smallBusinessSetAsideOnly` (type: `boolean`):

Only return RFQs set aside for small businesses.

## `hubZoneOnly` (type: `boolean`):

Only return RFQs set aside for HUBZone businesses.

## `serviceDisabledVetOwnedOnly` (type: `boolean`):

Only return RFQs set aside for Service-Disabled Veteran-Owned Small Businesses (SDVOSB).

## `womanOwnedSmallBusinessOnly` (type: `boolean`):

Only return RFQs set aside for Woman-Owned Small Businesses (WOSB).

## `economicallyDisadvantagedWosbOnly` (type: `boolean`):

Only return RFQs set aside for Economically Disadvantaged Woman-Owned Small Businesses (EDWOSB).

## `unrestrictedOnly` (type: `boolean`):

Only return RFQs with no small-business set-aside restriction.

## `maxItems` (type: `integer`):

Maximum number of RFQ records to return in this run. The default of 25 finishes in about two minutes with attachment links; raise it for bigger pulls.

## `fetchAttachmentLinks` (type: `boolean`):

When enabled, visits each RFQ's "Package View" detail page to collect drawing/attachment document links beyond the main solicitation PDF, when present. Adds one extra request per record. Disable to scrape faster if you only need the search-results fields.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed request before giving up. Each retry uses a fresh connection, so a few failed connections do not end the run.

## `requestDelaySecs` (type: `integer`):

Minimum pacing delay between requests, to stay a good citizen of a public .mil system.

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

Apify datacenter proxy is on by default. Some connections to DIBBS are refused or stall, and the Actor retries them on a fresh connection.

## `onlyNewSolicitations` (type: `boolean`):

When enabled, the first run builds a baseline of seen solicitation numbers. Later scheduled runs with the same Monitor Scope only output solicitations not seen before, turning this into a daily new-RFQ feed for contractors watching a given NSN/FSC/category.

## `monitorScope` (type: `string`):

Names this saved search so each monitor keeps its own seen-solicitations history. Use a distinct name per saved search or schedule.

## `resetSeenSolicitations` (type: `boolean`):

Clear the stored baseline for the given Monitor Scope before this run, so all matching solicitations are treated as new again.

## Actor input object example

```json
{
  "searchCategory": "fsc",
  "searchValue": "5340",
  "searchScope": "recent",
  "smallBusinessSetAsideOnly": false,
  "hubZoneOnly": false,
  "serviceDisabledVetOwnedOnly": false,
  "womanOwnedSmallBusinessOnly": false,
  "economicallyDisadvantagedWosbOnly": false,
  "unrestrictedOnly": false,
  "maxItems": 25,
  "fetchAttachmentLinks": true,
  "maxRequestRetries": 6,
  "requestDelaySecs": 1,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "onlyNewSolicitations": false,
  "monitorScope": "default",
  "resetSeenSolicitations": false
}
```

# Actor output Schema

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

No description

# 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 = {
    "searchValue": "5340",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/dibbs-rfq-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 = {
    "searchValue": "5340",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/dibbs-rfq-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchValue": "5340",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/dibbs-rfq-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/dibbs-rfq-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LLCT4osVs6faye1JN/builds/AaCnNsw2hk14mPtOI/openapi.json
