Get access to the most comprehensive agriculture data platform in Africa

The console itself sits behind a login and stays out of search results, so this page is the public account of how access works: what a bare account can do on day one, what needs a station, what needs credit, and the rate card exactly as the console shows it once you are inside. Nothing here is a special rate; it is the same numbers billing runs on.

3 steps from signup to your first call

  1. Create an account: free, no payment details asked. Confirm your address and the market layer, the full catalogue and the documentation are already open to you. You can look around with no key, no hardware and no payment on file.
  2. Create a key: a few seconds, and the free monthly allowance starts working the moment it exists. The secret is shown exactly once, so copy it there; the server keeps only a hash afterward.
  3. Add credit once you outgrow the allowance: the rate card lives on the billing page and every charge is per call, as you use it, never a flat fee. Pay by card, M-Pesa or bank transfer; credit lands when the payment settles, so a tab closed early loses nothing.

A fourth step exists but only for accounts with hardware: connecting a farm, either a NuaSense gateway already on the field or your own sensors through Sensor Ingest. The market layer works fully without it.

Answers computed for you, not just rows to process

A dataset call hands you rows and leaves the arithmetic to you. The other kind of call hands you an answer: 28 questions in total, each worked out from records the platform already holds and handed back with a trust block naming how much weight the figure carries. Grouped by the data behind them:

Each question, what it returns, which filters it accepts and what an answer costs is set out under analyses, one page per group.

Measured, not predicted: every one of these is an observation or an arithmetic result on observations, with no price forecast and no yield prediction anywhere among them. That absence is a decision, not a gap. Both were built. Both were tested against the trivial rule of carrying today's figure forward, at 4, 8 and 13 week horizons for maize, beans and fertilizer prices and against "this county yields what it usually yields" for satellite yield. Both lost, so neither shipped, and neither has an endpoint today. What you can call here is only what beat that bar.

Every one of these questions is also a tool through the connector below, so it can be asked in plain language and comes back with the same caveats attached. Try any of them against your own key in the console before you build anything on top of it.

API keys, scopes and rate limits

A key identifies an integration, never a person, which is exactly why an account gets 10 of them to hold at once: give each integration its own, and revoking one never touches the others. Scopes are fixed at minting, market:read for the Market Data family, farm:read for Sensor Data and Location Data, alerts:write to create watches, with the full read surface on by default and writes staying explicit. A catalogue dataset answers only a key whose scopes cover it, and a farm dataset answers only when its device is additionally approved for API exposure on that account.

LimitValueWhat it is for
Calls per key per UTC day1,500Abuse protection, enforced. Headers X-Daily-Limit and X-Daily-Remaining say where you stand.
Requests per key per minute60Rate limit; 429 with Retry-After when exceeded.
Rows per call500 default, 5,000 maximumCounted in total, not per series.
Active keys per account10Revoke one to mint another.
SMS watches per key3Price, demand and news watches share the cap; watches themselves are free.

The daily counter belongs to the key, not to any single mount it calls, because the cap is a property of the customer rather than of a URL.

Pricing: the rate card for agriculture data API calls

The free allowance depends on what the account already is, not on a plan you pick. A station owner bought the hardware specifically to read their own field, so that allowance is 500 calls a month; everyone else gets 50, enough to answer "does this work" and not enough to run anything on. Every account, station or not, also gets a one-time 500 calls in its first 30 days, because evaluating an API is a different activity from running on it, and nobody should hit a payment wall while they are still reading error messages.

ItemRateNotes
Free allowance, with a station500 calls / monthAny owned gateway or ingest station qualifies.
Free allowance, without a station50 calls / monthPlus a one-time 500 in the first 30 days.
API calls, first 50,000 callsUSD 1.00 per 1,000Graduated: each band prices only the calls inside it, so growing never moves you onto a worse rate. Crossing a band mid-month re-prices the whole month at the better rate.
API calls, 50,001 to 500,000USD 0.75 per 1,000Graduated: each band prices only the calls inside it, so growing never moves you onto a worse rate. Crossing a band mid-month re-prices the whole month at the better rate.
API calls, 500,001 to 2,000,000USD 0.55 per 1,000Graduated: each band prices only the calls inside it, so growing never moves you onto a worse rate. Crossing a band mid-month re-prices the whole month at the better rate.
API calls, beyond 2,000,000USD 0.40 per 1,000Graduated: each band prices only the calls inside it, so growing never moves you onto a worse rate. Crossing a band mid-month re-prices the whole month at the better rate.
Analyses, per answerUSD 40 per 1,0004¢ an answer, flat rather than graduated. The first 10 each month are free, from an allowance of their own that leaves the call allowance untouched. 23 questions are priced this way; the catalogue call, the RSS feed and the watches count as ordinary calls.
Validationsquoted on requestInterviews, plot checks and studies involve people and field time, so they are scoped in a conversation and quoted per interview, per plot or per study. Never metered, never self-serve.
MCP connectorUSD 10 / month per key that used itPlus calls at the normal rate. No seat fee: a login that asks nothing costs nothing.
NotificationsUSD 0.02 per delivered messageSMS and WhatsApp alike. Watches are free; a watch that never fires costs nothing.
Webhooksone call per delivered pushRetries of a failed delivery are not charged again. Polling every 5 minutes costs about 8,600 calls a month; a webhook that fires 20 times costs 20.
Exports, your own farm datafree, 5 a dayYou already have these rows; charging for the same data in a different shape is a tax on leaving.
Exports, market and location bulkUSD 2 per 100,000 rowsCounted on rows written; a truncated job charges only what it produced. Files are kept 48 hours.
Sensor Ingest: bring your own farm sensorsUSD 2 per station per monthCharged in full for any month a station exists, not pro-rated. Covers the hourly agronomy computed on your readings.

Credit is prepaid and drawn down per call, so there is no invoice waiting at the end of the month. Usage is totalled month-to-date and pulled from the balance once a day, which means a heavy day can land before the next top-up and push a balance slightly negative; the billing page shows you that shortfall before anything else does. The rate card itself is quoted in dollars, but the ledger and the payment rails run in shillings at a fixed, published rate, and the minimum top-up is 650 shillings.

Connecting Claude Code and Claude.ai to live agriculture data

An MCP server at mcp.nuasense.com puts 41 tools in front of a model: the market analyses, a catalogue reader that can pull any dataset by id, and 10 farm tools that answer available: false with a plain explanation when the account has no station. A tool the model can't see is a capability the customer never hears about, so every one of the 41 is exposed rather than held back.

  1. Claude on the web: Settings, then Connectors, then Add custom connector, with the URL https://mcp.nuasense.com. Leave the OAuth client id and secret blank. There is no field for an API key here at all; the server runs its own sign-in page instead, and you log in with your platform account, once per person.
  2. Claude Desktop or Claude Code: both take a bearer token directly against the same URL, so no sign-in page is involved. Your API key is the token.

From there you just ask, in plain language: which counties are above normal this week, what DAP costs in Nakuru and how far to trust that figure, what the law is about to require of green-bean exporters, whether your own field can take a spray this afternoon and what rules it out if not. Every tool call still runs through the same API, metered at the same rate as a direct one.

Webhooks, scheduled exports and SMS alerts on agricultural data

Webhooks: you define the condition, the platform signs and posts the payload. The endpoint has to be HTTPS on port 443 or 8443 and resolve to a public address; anything pointing inside a private network is refused both at registration and again at delivery, since DNS can always be re-pointed afterward. Every payload carries an HMAC-SHA256 signature over the timestamp and body, with the secret shown exactly once. A failed delivery gets retried with widening gaps, 6 times across about 3 hours, and an endpoint that keeps refusing gets paused with the reason logged next to it in the console.

Scheduled exports: bulk delivery for anyone who wants a file, not an integration. Queue one with the same filters a call would use; downloading it still needs a key, because a file link on its own is not a login. A job that hits its row ceiling says so plainly, so you can narrow the range and get a complete file instead of a silently truncated one. Files are gone after 48 hours.

Watches: a price watch fires when a county price crosses a threshold, a demand watch fires once when a county's outlook turns rising, a news watch fires on a new high-trust signal for a commodity. Each of the 3 delivers as an SMS, and a key can hold up to 3 at once. Anything raised overnight on a farm waits and arrives as a single morning digest, so a bad night wakes you once rather than 7 times.

Briefing and feed: 1 email briefing, daily, weekly or monthly, drawn from the signals and cross-referenced against the platform's own price, demand and trade layers, and sent only on days something happened. The same signals also run as an RSS feed with keyword filtering, for whatever mail client or reader you already use.

Sensor Ingest: bring your own farm sensors

Register a station, get back its identifier, start posting readings; that is the whole onboarding. The contract is the measurement weather_raw, the station's identifier as gateway_id, and the fields temperature, humidity, pressure, light, wind speed, wind gusts, wind direction and rain pulses. Position is optional to register but required before the agronomy runs, since both evapotranspiration and daylight are computed from it. Anything outside a physical range is refused outright, with the offending row named in the response. Every ingested reading is written under a token that can't reach anyone else's farm bucket, and from there the same hourly derived variables and risk models run on it as on a NuaSense-installed station. Full detail on the Weather Data group page.

API error codes and what they mean

StatusMeaning
400A field you cannot reach, or a bad time or aggregation value. Naming an unpublished field is a 400 on purpose, so "not granted" is distinguishable from "no data".
401Missing, malformed, revoked or expired key.
403Your key lacks the scope, or the station is not approved for API exposure.
404The dataset exists in the platform but is not published to you. The body names it; this is an answer, not a routing accident.
429Per-minute budget or the daily cap. Retry-After is set.

How the platform guards what it serves

The API is deny-by-default, and the platform growing never widens it on its own. A new soil node, a new measurement, a new field on a measurement already live: none of them becomes reachable until a person confirms it, and until then they sit in a pending queue and wait. The router itself is generated from the catalogue, so there is exactly 1 place where the surface can widen, and that 1 place is guarded. Even the console's own allowance display reads from the same function that charges the account, so it can never show one number while a different one is applied behind it.