# Codata Tax Relief (`makeshefa/codata-tax-relief`) Actor

- **URL**: https://apify.com/makeshefa/codata-tax-relief.md
- **Developed by:** [Makeshefa Technologies](https://apify.com/makeshefa) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## US Disaster Tax Relief Lookup

Whenever the IRS postpones tax deadlines for a federally declared disaster, it announces it as a one-off
press release — no official machine-readable version, no central feed. This Actor turns those notices into
a queryable API: look up relief by state and county (or tribal area), or pull everything that's changed
since a given date to keep your own system in sync.

Every record links back to its original IRS notice and carries the exact sentence the IRS used to state the
covered area and the deadline — not a paraphrase. Where a record hasn't been independently re-verified
since extraction, its `confidence` field says so.

**Free to use.** No Apify subscription or per-call charge — get a free Apify account and API token, and call
the endpoints below.

**Not tax advice.** This is informational data drawn from public IRS notices. Verify time-sensitive decisions
against the source before relying on them.

### Using the live API

This Actor runs in Standby mode, so it answers requests directly with no per-call cold start. Get a free API
token from your Apify account (Settings > API & Integrations), then call:

```
https://makeshefa--codata-tax-relief.apify.actor
```

**Bash:**

```
export BASE="https://makeshefa--codata-tax-relief.apify.actor"
export TOKEN="your-apify-token"

curl -H "Authorization: Bearer $TOKEN" "$BASE/lookup?state=TN&county=Davidson"
curl -H "Authorization: Bearer $TOKEN" "$BASE/lookup?state=SD&area=Oglala%20Sioux%20Tribe"
curl -H "Authorization: Bearer $TOKEN" "$BASE/changes?since=2026-09-01"
curl -H "Authorization: Bearer $TOKEN" "$BASE/health"
```

**PowerShell** (uses `curl.exe` explicitly — plain `curl` is aliased to `Invoke-WebRequest`, which takes
different flags):

```powershell
$env:BASE = "https://makeshefa--codata-tax-relief.apify.actor"
$env:TOKEN = "your-apify-token"

curl.exe -H "Authorization: Bearer $env:TOKEN" "$env:BASE/lookup?state=TN&county=Davidson"
curl.exe -H "Authorization: Bearer $env:TOKEN" "$env:BASE/lookup?state=SD&area=Oglala%20Sioux%20Tribe"
curl.exe -H "Authorization: Bearer $env:TOKEN" "$env:BASE/changes?since=2026-09-01"
curl.exe -H "Authorization: Bearer $env:TOKEN" "$env:BASE/health"
```

### Endpoints

- `GET /lookup?state=<USPS code>&county=<name>` — relief covering a specific county (also matches
  statewide-scope records).
- `GET /lookup?state=<USPS code>&area=<name>` — same, but for a tribal area name instead of a county.
- `GET /lookup?fips=<5-digit code>` — **not yet supported.** Returns a 501 explaining that FIPS codes
  aren't joined into the dataset yet. Included now so the shape of the API doesn't change later.
- `GET /changes?since=YYYY-MM-DD` — every record whose IRS notice was published on or after that date,
  for syncing your own copy.
- `GET /health` — record count and dataset freshness date.

Every response includes `data_as_of` (when the data was last checked against its sources),
`corrections_url`, and the disclaimer above.

### Example response

`GET /lookup?state=TN&county=Davidson`:

```json
{
  "data_as_of": "2026-09-18",
  "results": [
    {
      "relief_id": "TN-2025-02",
      "state": "TN",
      "disaster_name": "Severe storms, straight-line winds, tornadoes and flooding in Tennessee",
      "postponed_until": "2025-11-03",
      "status": "expired",
      "covered_obligations_detail": [
        "individual income tax returns and payments",
        "estimated tax payments (April 15, June 16, September 15)",
        "quarterly payroll and excise tax returns"
      ],
      "citation": {
        "url": "https://www.irs.gov/newsroom/irs-announces-tax-relief-for-tennessee-storm-victims-various-deadlines-postponed-to-nov-3",
        "quote_deadline": "As a result, affected individuals and businesses will have until Nov. 3, 2025, to file returns and pay any taxes that were originally due during this period.",
        "confidence": "high"
      }
    }
  ]
}
```

(Trimmed for readability — the full response includes every covered obligation, both source quotes, and
revision history where the IRS has amended a notice in place.)

### How the data is verified and kept current

Records are extracted from IRS.gov with AI assistance, then cross-checked against the source page — not
manually re-typed line by line. Each record's `citation.confidence` (high/medium/low) reflects how certain
that check was. Updating the dataset is currently a manual process; there's no scheduled auto-refresh yet.

### Known limitations

- FIPS lookup (`/lookup?fips=`) isn't wired up yet — county name lookup works today.
- `status` (active/expired) is computed live from `postponed_until`, not stored per record.
- No scheduled collector yet, so newly issued IRS notices aren't picked up automatically.

Note: every call needs the `Authorization` header above, including a simple health check — there's no
unauthenticated path, even though this Actor is free to use.

### Questions or a correction to report

`support@makeshefa.com`, or use the [corrections page](https://makeshefa.com/codata/tax-relief/corrections/)
on the site — include the `relief_id` so it's fast to find.

# Actor input Schema

## Actor input object example

```json
{}
```

# Actor output Schema

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("makeshefa/codata-tax-relief").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("makeshefa/codata-tax-relief").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 '{}' |
apify call makeshefa/codata-tax-relief --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,makeshefa/codata-tax-relief"
        }
    }
}
```

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/E5Vv9ImHoUo9nIBRg/builds/beRv4PkmAYT1gtgO2/openapi.json
