# The open data

The data on this site is also a file you can download, under CC BY 4.0. This page lists the files and says what every field means.

## Files

- [data.json](https://naturefunding.org/data.json): every programme, call and fact with its source, quote and checked date.
- [data.schema.json](https://naturefunding.org/data.schema.json): the JSON Schema of data.json, with the field descriptions below.
- [data.csv](https://naturefunding.org/data.csv): one row per call, plus one row for each programme with no call, for spreadsheets.
- [feed.xml](https://naturefunding.org/feed.xml): an Atom feed of the calls of listed programmes, up to the 100 most recently updated; a call that opens, closes or changes its deadline date shows up as a new entry.
- [health.json](https://naturefunding.org/health.json): the latest run of the checking job: when it ran, and how many funder pages were due, unchanged, changed or could not be read.
- [llms.txt](https://naturefunding.org/llms.txt): an index for AI agents, with a Markdown copy of every page; [llms-full.txt](https://naturefunding.org/llms-full.txt) is all of them in one file.

The files are built from the main branch of the [public repository](https://github.com/Restoration-Scope/rs-naturefunding) each time the site is deployed. No key or sign-up is needed.

## How to read a fact

- A fact the funder states has an evidence object: the page it was read from, the exact words that state it, and the day we read them.
- For a fact the funder states (amount, geography, who can apply, co-funding, a call’s opens and deadline), `null` means the pages we read don’t say. It never means “no” or “none”. Two exceptions: a rolling programme’s deadline is null because the funder says there is none, and a date the funder gives without a year or an exact day stays null and is written in the call’s `recurring` or`expected` instead.
- Who can apply and where are our categories, from the funder’s words; read the quote before deciding you qualify. The approaches are our own classification and have no quote.
- A deadline is filled in only when the funder gives the date with its year. We never work one out from “every March” or last year’s round.
- data.json keeps each call’s status from its last check, with the day in its evidence. The finder and the Markdown pages also show a call as closed once its deadline date has passed. Check the funder’s page before you apply.
- The finder flags a listing checked over 30 days ago and hides one checked over 90 days ago; data.json still includes it, with its date.
- Quotes are the funders’ words and are not covered by our licence. Keep them short and link the source.

## Stable links

We don’t change a programme’s `id`, so `https://naturefunding.org/p/{id}/` stays a working link. Each fact on that page has its own anchor for citing: `#amount`, `#geography`, `#applicant_types`, and for a call `#call-{call id}-deadline`. Adding `.md` in place of the last slash gives the page as Markdown.

## Example

The names of the programmes whose stored call status is “open”, rolling programmes included. That is the last check, not the finder’s “open now” list:

```
curl -s https://naturefunding.org/data.json | jq -r '
  .programmes[]
  | select(any(.calls[]; .status == "open"))
  | .name'
```

## Fields

The [JSON Schema](https://naturefunding.org/data.schema.json) has the types; the schema in the repository’s `src/data/schema.ts` is the full contract, with the rules that tie fields together.

### The file

In the top level of data.json.

- **`name`**: Title of the dataset.
- **`url`**: The site.
- **`license`**: SPDX licence of the data. Quotes are the funders’ words and are not covered.
- **`attribution`**: How to credit the data.
- **`source`**: The repository the data is built from.
- **`generated_on`**: The day this file was built (YYYY-MM-DD). Statuses are as of the evidence dates, not this day.
- **`note`**: How to read the evidence.
- **`programmes`**: Every programme, including ones hidden from the finder after 90 days without a check.

### Programme

In each item of programmes.

- **`id`**: Stable identifier and URL slug: the listing is /p/{id}/. Facts change; the id does not.
- **`name`**: The programme’s name, as the funder writes it.
- **`funder`**: The organisation that provides the money.
- **`administered_by`**: The organisation that runs the call for the funder (for example a UNDP country office), or null.
- **`parent`**: The id of the umbrella programme this one belongs to (a country programme’s global programme), or null.
- **`url`**: The funder’s main page for the programme.
- **`summary`**: One or two sentences in naturefunding.org’s own words. Not a quote.
- **`kind`**: “partnership” for paid work under contract (planting partners), which is not a grant. Missing means grant.
- **`approaches`**: naturefunding.org’s classification of the work it supports, from the funder’s description.
- **`applicant_types`**: Who can apply, in our categories from the funder’s words (the quote is in evidence), or null when the pages we read don’t say.
- **`geography`**: Where projects can be, in our categories from the funder’s words (the quote is in evidence), or null when the pages we read don’t say.
- **`access`**: How an applicant reaches the money: direct (apply to an open call), intermediary (apply to a partner, not the funder), invitation_only (no unsolicited proposals), unspecified.
- **`window`**: fixed (rounds with deadlines), rolling (apply any time) or unspecified.
- **`amount`**: Grant size in the funder’s currency, or null when not stated.
- **`co_finance_required`**: true or false when the funder says whether co-funding is required; null when it doesn’t.
- **`reporting`**: What the funder asks grantees to report, in our words, or null.
- **`calls`**: The rounds of applications we found. Intermediary and invitation-only programmes list none.
- **`evidence`**: For each stated programme-level fact, where it was read: the field name maps to an evidence object.
- **`checked_at`**: The oldest evidence date: every fact in this programme was read on or after this day (YYYY-MM-DD).

### Call

In each item of a programme’s calls.

- **`id`**: Identifier of the call, unique within its programme.
- **`label`**: The call’s name, as the funder writes it.
- **`url`**: The funder’s page for this call.
- **`status`**: upcoming, open, closed, suspended or unknown, as of evidence.status.checked_at. A call closed because its stated deadline passed carries its deadline evidence there instead.
- **`opens`**: The date the call opens (YYYY-MM-DD), only when the funder states a firm date with its year; else null.
- **`deadline`**: The deadline, only when the funder states it with its year; else null. Never inferred.
- **`evidence`**: Where status, opens, deadline and recurring were read.
- **`expected`**: When the funder expects an upcoming call to open, in its own words (“June 2027”). Firm dates go in opens.
- **`recurring`**: Dates the funder gives without a year, repeating each year, in our words.
- **`note`**: A condition the funder puts on the call, in our words (“Subject to funding approval”).

### Evidence

In each value of an evidence object.

- **`source_url`**: The page the fact was read from: the funder’s, or the organisation running the programme.
- **`quote`**: The exact words on that page that state the fact. The funder’s words, not covered by our licence.
- **`checked_at`**: The last day we read that page and found these words (YYYY-MM-DD).
- **`method`**: How it was read: page (read from the web page), api (a funder’s API) or human (a person re-read the page by hand).

### Amount

In a programme’s amount.

- **`currency`**: ISO 4217 currency code.
- **`min`**: The smallest grant, when stated.
- **`max`**: The largest grant, when stated.
- **`typical`**: true when the funder gives a usual range (“typically”), not hard limits.
- **`max_exclusive`**: true when the funder says “less than” the max, not “up to”.
- **`per`**: “year” when the amount is per year, not per grant.
- **`note`**: A qualifier from the same quote, in our words.

### Geography

In a programme’s geography.

- **`scope`**: global (anywhere), countries (a list) or regions (a group the funder names, such as “ODA-eligible countries”).
- **`countries`**: ISO 3166-1 alpha-2 country codes.
- **`regions`**: Broad regions the group covers.
- **`label`**: The funder’s own name for the area or group.

### Deadline

In a call’s deadline.

- **`date`**: The deadline day (YYYY-MM-DD).
- **`time`**: The cutoff time (HH:MM), when the funder states one.
- **`timezone`**: The time zone of the cutoff time, when the funder states one: an IANA name where we could map it, otherwise the funder’s abbreviation or offset (“CEST”, “EDT (UTC-4)”).
- **`text`**: The deadline as the funder wrote it.

### Organisation

In funder and administered_by.

- **`name`**: The organisation’s name.
- **`url`**: The organisation’s website.

## Licence

The data is licensed [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/): you can reuse it, including commercially, if you credit “naturefunding.org (Restoration Scope)”, link to https://naturefunding.org and the licence, and say if you changed the data. Quotes are the funders’ words and are not covered. The code is MIT-licensed.
