# SAM.gov Amendment & Opportunity Change Tracker (`ultimatemc/sam-gov-opportunity-change-detector`) Actor

Track what changed in SAM.gov contract opportunities: amendments, response deadline moves, new or removed attachments, set-aside, NAICS, place of performance and cancellations. For government contractors and bid teams. Returns each change with before, after and a plain-English impact note.

- **URL**: https://apify.com/ultimatemc/sam-gov-opportunity-change-detector.md
- **Developed by:** [Ultimate Foresight Inc](https://apify.com/ultimatemc) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

**SAM.gov Amendment & Opportunity Change Tracker** tells you **what changed** in federal contract opportunities on SAM.gov. Give it notice links, notice IDs or solicitation numbers (or a keyword / NAICS / set-aside search), and it walks the full version history of each notice and returns every change as **before → after**, with an impact level and a plain-English note: **response deadline extended or moved earlier, new amendments (SF 30) and attachments, set-aside changes, NAICS or place-of-performance changes, Q\&A posted, notice type changes and cancellations**. Click **Start** with the prefilled example to see three real notices analyzed in about 20 seconds.

> **A change summary, not contracting advice.** Results are built from the public SAM.gov notices (the same data the public notice pages show, no login). The official notice, its attachments and amendments are what count: always open the linked notice before you act. Not affiliated with SAM.gov or GSA. No point-of-contact names, emails or phone numbers are collected.

### What does SAM.gov Amendment & Opportunity Change Tracker do?

- ✅ Reads **every version** of a notice (original plus each amendment) and compares them in order, from any notice ID or link in the chain
- ✅ **Response deadline changes**, with the exact number of days: extended, moved earlier (flagged high), added or removed
- ✅ **Set-aside changes** with what they mean: "Total Small Business → WOSB: only firms with that status can bid", or a set-aside removed so large businesses can compete
- ✅ **New, replaced and removed attachments**, with amendments, SF 30s and Q\&A documents called out
- ✅ **Description changes**: how much the text changed, the new and removed sentences, and new dates mentioned (site visits, question deadlines)
- ✅ NAICS, PSC, place of performance, title, notice type (presolicitation → solicitation), award details, archive date and **cancellations**
- ✅ One row per opportunity with `summary`, `highestImpact`, `changes[]` (field, before, after, severity, impact, version and date) and the current deadline, set-aside, NAICS and attachments
- ✅ **Monitoring mode**: search by keyword, NAICS, set-aside and notice type for opportunities updated in the last N days, report only changes since a date, and skip notices with no changes

### Who is it for?

- 🏗️ **Government contractors and small businesses** tracking bids they are working on
- 📋 **Capture managers and proposal teams** who must acknowledge every amendment and not miss a moved deadline
- 🤝 **Bid-matching services, consultants and PTACs / APEX Accelerators** watching many opportunities for clients
- 🤖 **Developers and AI agents** that need structured "what changed" data instead of re-reading notices

### How to track SAM.gov amendments and changes

1. Click **Try for free** or **Start**. The input is prefilled with two notice links/IDs and one solicitation number.
2. Replace them with your own in **SAM.gov notice IDs or URLs** or **Solicitation numbers**, or fill in the **Search** fields (keywords, NAICS, set-aside, notice types, modified within N days).
3. Optional: set **Only changes from the last N days** and **Only output opportunities with changes** for a daily alert.
4. Click **Start**. Each opportunity becomes one row with its changes.
5. Schedule it daily and connect email, Slack, Google Sheets or a webhook to get alerted.

### Input example

This is the prefilled input:

```json
{
  "noticeIds": [
    "https://sam.gov/opp/bd37e6a081204826b9052df130eb2740/view",
    "97f560a3543247dc9c81a18982f79372"
  ],
  "solicitationNumbers": [
    "FA448627Q0002"
  ]
}
```

Daily monitor for amended janitorial opportunities set aside for small business (run every morning):

```json
{
  "searchKeywords": "janitorial",
  "naics": [
    "561720"
  ],
  "setAside": [
    "SBA"
  ],
  "noticeTypes": [
    "o",
    "k"
  ],
  "modifiedWithinDays": 1,
  "changesWithinDays": 1,
  "onlyWithChanges": true,
  "minSeverity": "medium",
  "maxOpportunities": 50
}
```

### Output example

Real output from the prefilled input above (run on 2026-10-21, America/Chicago). The input returned 3 rows; here is the cancelled notice in full:

```json
{
  "noticeId": "394a63c6b0b840f2ad98b4e82f9a5f47",
  "solicitationNumber": "FA448627Q0002",
  "title": "Waste Water Treatment Plant Services",
  "url": "https://sam.gov/opp/394a63c6b0b840f2ad98b4e82f9a5f47/view",
  "agency": "DEPT OF DEFENSE > DEPT OF THE AIR FORCE > U.S. AIR FORCES IN EUROPE > FA4486  765 ABS CONF",
  "noticeType": "Combined Synopsis/Solicitation",
  "status": "cancelled",
  "responseDeadline": "2026-11-23T15:00:00+00:00",
  "responseTimeZone": "Europe/Lisbon",
  "setAside": "No set-aside used",
  "setAsideCode": "NONE",
  "naics": [
    "221320"
  ],
  "psc": "M1ND",
  "placeOfPerformance": "Praia da Vitoria, PT-20, 9760-002, PRT",
  "award": null,
  "firstPostedDate": "2026-10-12",
  "lastPostedDate": "2026-10-20",
  "versionCount": 2,
  "versionsCompared": 2,
  "changeCount": 1,
  "highestImpact": "high",
  "summary": "1 change(s) across versions, 1 high impact. The notice was CANCELLED. Current status: cancelled.",
  "changes": [
    {
      "fromVersion": 1,
      "toVersion": 2,
      "fromNoticeId": "a82aef53035e47ada6b111e1de4f4e33",
      "toNoticeId": "394a63c6b0b840f2ad98b4e82f9a5f47",
      "changePostedDate": "2026-10-20",
      "field": "status",
      "changeType": "cancelled",
      "before": "active",
      "after": "cancelled",
      "severity": "high",
      "impact": "The notice was CANCELLED. Stop proposal work unless the agency says it will re-issue; check the cancellation text for a replacement notice."
    }
  ],
  "currentAttachments": [
    {
      "name": "Attachment 2 - Price Schedule.xlsx",
      "type": "file",
      "postedDate": "2026-10-12",
      "sizeBytes": 34817
    },
    {
      "name": "Attachment 1 -  Performance Work Statement.pdf",
      "type": "file",
      "postedDate": "2026-10-12",
      "sizeBytes": 307561
    },
    {
      "name": "Solicitation - FA448627Q0002.pdf",
      "type": "file",
      "postedDate": "2026-10-12",
      "sizeBytes": 685993
    }
  ],
  "versions": [
    {
      "version": 1,
      "noticeId": "a82aef53035e47ada6b111e1de4f4e33",
      "postedDate": "2026-10-12T14:45:24",
      "noticeType": "Combined Synopsis/Solicitation",
      "responseDeadline": "2026-11-23T15:00:00+00:00",
      "attachments": 3
    },
    {
      "version": 2,
      "noticeId": "394a63c6b0b840f2ad98b4e82f9a5f47",
      "postedDate": "2026-10-20T15:44:12",
      "noticeType": "Combined Synopsis/Solicitation",
      "responseDeadline": "2026-11-23T15:00:00+00:00",
      "attachments": 3
    }
  ],
  "changesSince": null,
  "note": "Built from public SAM.gov Contract Opportunities notices (no login). Impact notes are automated plain-English summaries of field changes, not legal or contracting advice; the official notice, its attachments and amendments govern. Point-of-contact details are not included."
}
```

And the Navy construction notice, trimmed to the deadline and attachment changes (the full row also lists archive-date changes and all versions):

```json
{
  "noticeId": "97f560a3543247dc9c81a18982f79372",
  "solicitationNumber": "N6945026R0011",
  "title": "Design-Build (DB) and Design-Bid-Build (DBB) Firm Fixed Price (FFP), Indefinite Delivery /Indefinite Quantity (IDIQ), Multiple Award Construction Contract (MACC) for new construction, renovation, and demolition for general construction projects for the NA",
  "url": "https://sam.gov/opp/97f560a3543247dc9c81a18982f79372/view",
  "agency": "DEPT OF DEFENSE > DEPT OF THE NAVY > NAVFAC > NAVFAC ATLANTIC CMD > NAVFAC SOUTHEAST > NAVFACSYSCOM SOUTHEAST",
  "noticeType": "Solicitation",
  "status": "active",
  "responseDeadline": "2026-10-22T14:00:00-04:00",
  "responseTimeZone": "America/New_York",
  "setAside": "Total Small Business Set-Aside (FAR 19.5)",
  "setAsideCode": "SBA",
  "naics": [
    "236220"
  ],
  "psc": "Y1AZ",
  "placeOfPerformance": null,
  "award": null,
  "firstPostedDate": "2026-09-02",
  "lastPostedDate": "2026-10-21",
  "versionCount": 5,
  "versionsCompared": 5,
  "changeCount": 6,
  "highestImpact": "high",
  "summary": "6 change(s) across versions, 1 high impact. 1 new attachment(s)/link(s) posted: N6945026R00110004 SF 30.pdf. Response deadline EXTENDED by 18 days: from Oct 2, 2026 2:00 PM (UTC-04:00) America/New_York to Oct 20, 2026 2:00 PM (UTC-04:00) America/New_York. Response deadline EXTENDED by 2 days: from Oct 20, 2026 2:00 PM (UTC-04:00) America/New_York to Oct 22, 2026 2:00 PM (UTC-04:00) America/New_York. Archive date changed from 2027-09-02 to 2027-09-16 (when the notice leaves active search). Current response deadline: Oct 22, 2026 2:00 PM (UTC-04:00) America/New_York.",
  "changes": [
    {
      "fromVersion": 1,
      "toVersion": 2,
      "fromNoticeId": "2d12b494c8a44061a96ac4ec03b632b7",
      "toNoticeId": "96e7da693095480eb79946afc6803c9a",
      "changePostedDate": "2026-09-16",
      "field": "responseDeadline",
      "changeType": "extended",
      "before": "2026-10-02T14:00:00-04:00",
      "after": "2026-10-20T14:00:00-04:00",
      "severity": "medium",
      "impact": "Response deadline EXTENDED by 18 days: from Oct 2, 2026 2:00 PM (UTC-04:00) America/New_York to Oct 20, 2026 2:00 PM (UTC-04:00) America/New_York. More time to respond; extensions often come with amended documents."
    },
    {
      "fromVersion": 4,
      "toVersion": 5,
      "fromNoticeId": "3e9bc6cdee4b4f0985792962eb85a836",
      "toNoticeId": "97f560a3543247dc9c81a18982f79372",
      "changePostedDate": "2026-10-21",
      "field": "responseDeadline",
      "changeType": "extended",
      "before": "2026-10-20T14:00:00-04:00",
      "after": "2026-10-22T14:00:00-04:00",
      "severity": "medium",
      "impact": "Response deadline EXTENDED by 2 days: from Oct 20, 2026 2:00 PM (UTC-04:00) America/New_York to Oct 22, 2026 2:00 PM (UTC-04:00) America/New_York. More time to respond; extensions often come with amended documents."
    },
    {
      "fromVersion": 4,
      "toVersion": 5,
      "fromNoticeId": "3e9bc6cdee4b4f0985792962eb85a836",
      "toNoticeId": "97f560a3543247dc9c81a18982f79372",
      "changePostedDate": "2026-10-21",
      "field": "attachments",
      "changeType": "added",
      "before": null,
      "after": [
        {
          "name": "N6945026R00110004 SF 30.pdf",
          "postedDate": "2026-10-21",
          "sizeBytes": 580297
        }
      ],
      "severity": "high",
      "impact": "1 new attachment(s)/link(s) posted: N6945026R00110004 SF 30.pdf. N6945026R00110004 SF 30.pdf look like amendments, Q&A or revised documents: they can change requirements, and amendments usually must be acknowledged in your offer (SF-30 or the method the notice states)."
    }
  ],
  "currentAttachments": [
    {
      "name": "N6945026R00110004 SF 30.pdf",
      "type": "file",
      "postedDate": "2026-10-21",
      "sizeBytes": 580297
    },
    {
      "name": "https://piee.eb.mil/sol/xhtml/unauth/search/oppMgmtLink.xhtml?noticeId=N6945026R0011&noticeType=SolicitationNotice",
      "type": "link",
      "postedDate": "2026-09-02",
      "sizeBytes": 0,
      "url": "https://piee.eb.mil/sol/xhtml/unauth/search/oppMgmtLink.xhtml?noticeId=N6945026R0011&noticeType=SolicitationNotice"
    }
  ],
  "changesSince": null,
  "note": "Built from public SAM.gov Contract Opportunities notices (no login). Impact notes are automated plain-English summaries of field changes, not legal or contracting advice; the official notice, its attachments and amendments govern. Point-of-contact details are not included."
}
```

The third prefilled notice (Luke AFB, F3YCFA6173AC01) shows a set-aside change from Total Small Business to WOSB (high), a solicitation amendment SF 30, a Q\&A document and a new site-visit form.

**Impact levels:** `high` = can change whether or how you bid (deadline moved earlier, set-aside changed or restricted, cancellation, an amendment you must acknowledge). `medium` = needs reading (deadline extended, new attachments, NAICS or description changes). `low` = housekeeping (archive date, small wording). `highestImpact` is the highest level in the row.

### How much does it cost to track SAM.gov changes?

This Actor uses **pay-per-event** pricing:

- **$0.01 per opportunity analyzed** (one result row per opportunity, however many versions it has)
- a tiny Actor start fee of **$0.00005** per run
- plus the small Apify **platform usage** of the run, paid by you. For the prefilled 3-opportunity example this was about **$0.0004** (256 MB, about 20 seconds).

So **100 opportunities cost about $1.00**. Opportunities skipped by **Only output opportunities with changes** are not charged. Apify lets you set a maximum cost per run.

### Use it through the API, integrations or AI agents

- **API:** `POST https://api.apify.com/v2/acts/ultimatemc~sam-gov-opportunity-change-detector/run-sync-get-dataset-items` with your Apify token and the input JSON as the body. Client libraries for JavaScript and Python are on the **API** tab.
- **AI agents (MCP):** add `https://mcp.apify.com?tools=ultimatemc/sam-gov-opportunity-change-detector` to Claude, Cursor, ChatGPT or any MCP client, so your agent can ask "what changed in this solicitation?" as a tool. See [Apify MCP server](https://docs.apify.com/mcp).
- **Automation:** schedule daily runs and connect webhooks, Make, Zapier, n8n, Slack, email or Google Sheets from Apify Console.

### FAQ

#### Do I need a SAM.gov account or API key?

No. It reads the public notice data that SAM.gov shows to any visitor.

#### Which link or ID should I use?

Any SAM.gov opportunity link (`https://sam.gov/opp/<id>/view`) or the 32-character ID in it. Any version works; the whole chain is read. Solicitation numbers work too, and if several notices share one number (for example a presolicitation and a solicitation), each is returned.

#### Does it read the PDF attachments?

No. It tracks attachments by name, size and date and calls out amendments, SF 30s and Q\&A files, but it doesn't open them. Changes made only inside a PDF show up as "new attachment", so read those files.

#### Does it use AI?

No. It compares fields and text directly, so results are repeatable and each change shows the exact before and after values.

#### How far back does it go?

The full history of each notice, up to **Max versions per opportunity** (default 10, most recent first). Search mode looks at notices updated in the last N days (default 7).

### Limitations

- Uses SAM.gov's public website data, which isn't a documented API and can change; if SAM.gov changes its format, runs may fail until we update the Actor.
- Attachment contents aren't read, and changes inside attachments aren't diffed.
- Description diffs are sentence-based: reformatting a long notice can show as a large change.
- Contract Opportunities only (no entity registrations, exclusions or award data from other systems). Deadlines are shown as posted, in the notice's own time zone.

### Data source

[SAM.gov Contract Opportunities](https://sam.gov/search/?index=opp), the official U.S. government site for federal contract notices. Notices, version history and attachment lists are read live at run time from the same public data the notice pages show. U.S. government data is public domain; attachments are not downloaded. Requests are spaced out to be polite to SAM.gov.

### Data and privacy

Only public notice data is read. Point-of-contact names, emails and phone numbers are removed and never saved. Results go only to your own Apify dataset.

### Other tools by Ultimate Foresight

- [Ad Copy Policy Checker for Meta, Google & TikTok](https://apify.com/ultimatemc/ad-copy-policy-checker): checks ad text against Facebook, Instagram, Google Ads and TikTok ad policies before you submit.
- [H-1B Visa Sponsor Checker & Score for Job Listings](https://apify.com/ultimatemc/h1b-visa-sponsor-score): adds Department of Labor H-1B sponsorship history and a 0-100 score to company names or job listings.
- [Chain vs Independent Labeler for Google Maps Leads](https://apify.com/ultimatemc/chain-vs-independent-labeler): labels local businesses as chain, franchise or independent.
- [YouTube Monetization Checker for Scripts & Titles](https://apify.com/ultimatemc/youtube-script-monetization-checker): pre-checks titles, descriptions and scripts for wording that leads to limited or no ads.
- [Etsy & eBay Listing Policy & Banned Item Checker](https://apify.com/ultimatemc/etsy-ebay-listing-policy-checker): pre-checks marketplace listings for prohibited items, counterfeit wording and off-platform contact.
- [Job Scam Detector & Trust Score for Job Postings](https://apify.com/ultimatemc/job-posting-trust-score): scores job postings 0-100 for scam and ghost-job signals.
- [Product Recall Checker for Brands, UPCs & Products](https://apify.com/ultimatemc/product-recall-matcher): matches your brands, products, UPCs or model numbers against CPSC, FDA and NHTSA recalls.
- [App Store & Google Play Listing Policy Checker](https://apify.com/ultimatemc/app-store-listing-policy-checker): pre-checks app names, subtitles and descriptions against Apple and Google Play metadata rules.

Missed a change or got a wrong impact note? Open an issue on the **Issues** tab with the notice link, and we'll review it.

# Actor input Schema

## `noticeIds` (type: `array`):

Notice IDs (the 32-character code in the URL) or full links like https://sam.gov/opp/<id>/view. Any version of a notice works; the whole amendment history is checked. The prefill has two real notices; replace them with yours.

## `solicitationNumbers` (type: `array`):

Solicitation / notice numbers such as W9127826RA005. Spaces and dashes don't matter. If several notices share the number (for example a presolicitation and the solicitation), each one is returned.

## `searchKeywords` (type: `string`):

Find recently amended opportunities by keyword (e.g. "janitorial"). Combine with NAICS, set-aside and notice type. Leave all search fields empty to check only the notices listed above.

## `naics` (type: `array`):

Primary NAICS codes, e.g. 561720.

## `setAside` (type: `array`):

Only opportunities with these set-asides.

## `noticeTypes` (type: `array`):

Only these notice types.

## `modifiedWithinDays` (type: `integer`):

Search only opportunities updated in the last N days. Use 1 on a daily schedule.

## `onlyWithAmendments` (type: `boolean`):

In search mode, skip opportunities that have never been modified.

## `maxOpportunities` (type: `integer`):

Maximum opportunities to analyze from the search.

## `changesWithinDays` (type: `integer`):

Report only changes posted in the last N days, e.g. 1 for a daily alert. Leave empty for the full history.

## `changesSinceDate` (type: `string`):

Report only changes posted on or after this date (YYYY-MM-DD). Overrides the field above.

## `minSeverity` (type: `string`):

Hide lower-impact changes. 'medium' drops archive-date, PSC and small wording changes.

## `onlyWithChanges` (type: `boolean`):

Skip opportunities with no reported changes (you aren't charged for skipped ones). Useful with scheduled runs.

## `maxVersions` (type: `integer`):

Compare at most this many of the most recent versions of each notice.

## Actor input object example

```json
{
  "noticeIds": [
    "https://sam.gov/opp/bd37e6a081204826b9052df130eb2740/view",
    "97f560a3543247dc9c81a18982f79372"
  ],
  "solicitationNumbers": [
    "FA448627Q0002"
  ],
  "modifiedWithinDays": 7,
  "onlyWithAmendments": true,
  "maxOpportunities": 25,
  "minSeverity": "low",
  "onlyWithChanges": false,
  "maxVersions": 10
}
```

# 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 = {
    "noticeIds": [
        "https://sam.gov/opp/bd37e6a081204826b9052df130eb2740/view",
        "97f560a3543247dc9c81a18982f79372"
    ],
    "solicitationNumbers": [
        "FA448627Q0002"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ultimatemc/sam-gov-opportunity-change-detector").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 = {
    "noticeIds": [
        "https://sam.gov/opp/bd37e6a081204826b9052df130eb2740/view",
        "97f560a3543247dc9c81a18982f79372",
    ],
    "solicitationNumbers": ["FA448627Q0002"],
}

# Run the Actor and wait for it to finish
run = client.actor("ultimatemc/sam-gov-opportunity-change-detector").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 '{
  "noticeIds": [
    "https://sam.gov/opp/bd37e6a081204826b9052df130eb2740/view",
    "97f560a3543247dc9c81a18982f79372"
  ],
  "solicitationNumbers": [
    "FA448627Q0002"
  ]
}' |
apify call ultimatemc/sam-gov-opportunity-change-detector --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ultimatemc/sam-gov-opportunity-change-detector"
        }
    }
}
```

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/eUQeKfvdOV09izU3v/builds/vJ0zfNDrgyqyeXCb8/openapi.json
