How to use it

Two steps to knowing what a plant is worth before you land.

1 Scan a body, then ask what is on it.

Scan a body, then say "what biology is on this body".

Before mapping you hear the possible genera and a best case; after mapping, a low to high range.

what biology is on this body Ask Before mapping, it names the possible genera and a best case. After mapping, it narrows to a low–high range over the named genera.

2 Read which half the answer came from.

Listen for which half of the answer came from where.

Where a plant grows comes from the shipped tables; whether anyone has sold one here needs the network, and the answer says so.

Bacterium Aurasus Value 1,000,000 cr Where it grows from the shipped tables Whether anybody has sold one here needs the network The two halves come from two places, and the answer says which.

! The one that stops people.

Treat the figure as the base sale, and remember a first footfall multiplies it.

D47 states that the first-footfall bonus is not included in the number.

First-footfall bonuses are not in the shipped figure. The number is the base sale. Being first multiplies it, and D47 says so rather than folding it in.
Why it works this way

Two halves, from two sources, answering two questions — and only one of them may quote a figure for a species.

1 Keeping the halves apart is the whole design.

AFTER THE SCAN the game’s own answer names the genus so it gives a range, not a price BEFORE YOU GO an index of what others found names the species so it may The species is what sets the price. Mixing the halves would hide which figures rest on a survey and which rest on nothing.

2 Elite names the genus and stops there.

1 biological signal: Brain Trees. Also down there: 3 Geological. Every one of the 792 events measured names a genus, and never a species. Bacterium Alcyoneum and Bacterium Acies are very different money. So this half lists what is there and quotes no single price.

A scan that found nothing is a real answer, and the one that saves you a landing — no biological signals, nothing here to sample. That is different from “I have not looked”, and the two are worded differently on purpose.

3 It says how far there is still to go.

Stratum Paleas — 2 of 3, 1 to go. 341 metres from your last specimen. Stratum needs 500 metres between samples. 159 m to go. The distance is a community figure, per genus. Frontier publishes no table; the Codex entry is the authority.

The table carries a colony distance in metres for each genus, taken from community sources because Frontier publishes none. For a genus it lists, the answer says the distance and how many metres are still to go, or that you are far enough. For a genus it does not list, the answer says only how far you have moved and the closest gap the game has accepted from you, which is an upper bound and never the requirement.

4 A plotted route cannot contain a first footfall.

A PLOTTED ROUTE only holds what somebody has already visited A FIRST FOOTFALL only happens where nobody has been So every plot says so in its own last line.

The bonus is five times the value, and it is the trade-off nobody should discover after the flight. If undiscovered systems are what you are after, read a system name instead — that works with no network at all, which is the point of it.

The details

Plot a circuit through known biology, and read back what your own surface scan found on the body you are at.

“plot me an exobiology route” “what biology is on this body” “is this body worth landing on” “what did the scan find here” “how much exobiology data am I carrying” “reset unsold exobiology”

Two halves, from two different sources, answering two different questions. Keeping them apart is the whole design — because one of them can quote a figure for a species and the other can only give a range.

After the scan: what the game already told you

Once you have mapped a body with the detailed surface scanner, Elite writes SAASignalsFound and it says what is down there outright: the game’s own answer, which outranks anything D47 could work out from the body’s Scan.

HR 3230 3 a a, surface-scanned 2026-08-16 10:00 game time.
  1 biological signal: Brain Trees.
  Also down there: 3 Geological.

Elite names the genus and not the species. The candidates are a prediction from the body's
conditions, and the sample decides.

The game’s own answer stops at the genus. Every one of the 792 events measured names a genus — Bacterium, Stratum, Brain Trees — and never a species. Bacterium Alcyoneum and Bacterium Acies are very different money, and the game does not say which you are looking at until you take the sample. For a mapped body whose Scan D47 holds, it lists under each genus the species the body’s conditions admit, most valuable first, each with its value. Those are a prediction and the sample decides; D47 does not rank them by likelihood.

D47 does estimate a range, from the body’s own scan. ExobiologyCatalogue.Possible keeps the species whose surveyed conditions — planet class, atmosphere, volcanism, gravity, temperature, pressure and, where known, the galactic region — contain the body’s, and BiologyPotential turns them into a value range. Before a surface scan it sums the most valuable species in the highest-valued genera, as many genera as the FSS counted signals. After one it takes the named genera alone, and the range runs from the cheapest species of each to the dearest. The high-value biology callout says it on the body’s Scan when the best case reaches its threshold, as “up to 18.2 million” before a surface scan and as “X to Y” after one:

3 b could hold up to 18.2 million in biology: Stratum, Bacterium.

When a DSS names the genera on a landable body whose best case reaches the threshold, the callout says the candidate species once per body, before you land. Per genus: one candidate is named; two are named with the genus said once where both start with it; three give the genus and “one of three”; none give the genus alone. At most three genera are said, by value, then a count of the rest. The Scan that follows says nothing for that body.

B 3 a could hold 2.1 to 21 million in biology: Tussock Pennatis, Stratum Paleas or Excutitus, and Bacterium, one of three.

That is what the body’s conditions allow, not a price: the species actually there may be the cheapest of its genus. ExobiologyCatalogue.Possible widens each gravity, temperature and pressure band by 2% of its width on both sides, because a surveyed range is a sample of the bodies that carry the species and not its edge.

A scan that found nothing is a real answer and the one that saves you a landing:

Fixture 1, surface-scanned 2026-08-16 10:00 game time.
  No biological signals. Nothing here to sample.

That is different from “I have not looked”, and the two are worded differently on purpose.

Before you go: a circuit through known biology

1 system from Sol, 3 jumps, 6,904,100 credits of biology in all:

Opet — 3 jumps, 1 body, 6,904,100 cr.
  Opet 7 b (Rocky body, 2,536 ls out) — 6,904,100 cr
    Frutexa Flabellum — 1,808,900 cr
    Tussock Cultro — 1,766,600 cr
    Fungoida Setisis — 1,670,100 cr
    Bacterium Alcyoneum — 1,658,500 cr

Every system here has already been surveyed by somebody, so none of it is a first footfall —
that pays five times as much and only happens where nobody has been.

Here the species are named, and that is why this half may quote figures. The plotter is reading an index of bodies people have already scanned and uploaded, and that index knows down to the species. Values come from the response, never computed — a Commander’s own sale history cannot price a species, because 30 of the 31 species sold in the measured corpus were sold exactly once and the row total covers an unstated number of specimens.

On the surface: how many, and how far

Once you take the first specimen, Directive 47 tracks the run and speaks each one as it lands:

Stratum Paleas, 2 of 3. 556 metres from the last one. 1 to go, 500 metres from here.
Stratum Paleas analysed. That run is complete. Worth 1.8 million. No first footfall bonus. 21.4 million unsold.

Ask at any point and it will answer from where you are standing right now, which is the question you actually have while driving away from the last specimen:

Stratum Paleas — 2 of 3, 1 to go.
  341 metres from your last specimen.
  Stratum needs 500 metres between samples. 159 m to go.

Finished here: Bacterium Cerbrus.

The colony distance is a community figure. Frontier publishes no table of it; the species’ own Codex entry in the game is the authority. Exobiology.tsv holds one value per genus in its colony_distance column, taken from ArtemisScannerTracker, HerzbubeWiki’s EDExobiology page and EDCoPilot’s callouts. A genus with no value is answered as before.

It says when you are far enough, and when a set is lost. With a colony distance and a surface position, Directive 47 keeps the position of every specimen in the set and says once, as you cross the distance from all of them, “Far enough for the next Stratum Paleas sample.” Logging a different species while a set holds one or two specimens loses that set, and it says so as the scan lands: “That abandoned your 2 Stratum Paleas samples.” Approaching a body with biological signals that nobody has walked, it says “Nobody has set foot on Smojue EB-O d6-37 AB 1 b. First footfall bonus is there.” Each has its own switch: Far enough to sample, Abandoned samples and First footfall on approach.

Where there is no value, it learns. A specimen the game accepted is proof that the distance you travelled was sufficient, so the smallest accepted gap is an upper bound on the requirement — measured from your own play, carried with its sample size, and never presented as the figure itself.

Three things this rests on, all measured:

  • ScanOrganic carries no position at all — not on any of the 632 events measured. Directive 47 stamps one from Status.json as the event lands, so the distance is only as good as how closely those two writes track each other. A specimen taken with no position still counts; it simply carries no distance, because reporting zero would read as “you have not moved”.
  • The run is Log, Sample, Sample, Analyse on 94 of 101 runs. That is three specimens and a fourth event that banks them, so Analyse completes rather than counting as a fourth.
  • The body radius comes from Status.json, not from a Scan. That is a correction to the original plan, which would have made the distance uncomputable on any body you had not scanned. Distances are great-circle, so the same angle is a shorter drive on a small moon than on a large planet.

What you are carrying and have not sold

Every analysis adds to a running total of organic data not yet sold, and the analysis callout says what that one is worth and what the total now is. The value is the species’ figure from the shipped table, five times over where the body’s scan said nobody had walked there. Where the scan said somebody had, it is the figure alone; where no scan of the body said either way, it is the figure alone and the callout says the bonus is not known. When an AutoScan and a Detailed scan of the same body disagree, the one that says the body has been walked on is taken, because a footfall is not undone.

Cactoida Cortexum analysed. That run is complete. Worth 18.3 million with the first footfall bonus. 138.2 million unsold.

The total goes down when you sell at Vista Genomics: SellOrganicData removes every held analysis of each species it lists. It goes to zero when you die, since unsold data is lost, and when you say “reset unsold exobiology”. It is rebuilt from your journals at every start — each analysis after the latest death, reset, or sale that covered it — so it is right after a restart and on the first run. A species the table has no value for is named and left out of the total, and the total says how many it leaves out.

The trade-off nobody should discover after the flight

A plotted route structurally cannot contain a first footfall. An index only holds what has been visited and uploaded; the 5× first-footfall bonus only happens where nobody has been. Those two facts cannot both be satisfied, so every plot says so in its own last line rather than leaving you to work it out somewhere expensive.

If undiscovered systems are what you are after, read a system name instead — that works with no network at all, which is the point of it.

A plotted route is kept as the last exobiology plan, the way a Road to Riches loop is. The Exobiology card on the Navigation tab’s Plan page plots one and shows it again with Show most recent; arriving at a stop marks it reached; “plot next exobiology stop” puts the next system in the galaxy map through plot_next_stop on route planning.

Wire notes

The plotter is spansh’s api/exobiology/route, submitted as a job and polled — the same protocol as the neutron, Road to Riches and trade plots. Two traps here that the others do not have, both established against the live service rather than guessed:

  • from is required, works, and comes home as source. The endpoint echoes back the parameters it understood, and re-emits from under a different name. A caller checking its own parameters against that echo would conclude the origin was ignored and “fix” it into something that really is ignored.
  • use_mapping_value is silently dropped, even though the Road to Riches plotter honours it. A dropped parameter is not an error — the plot just runs with the default.

The origin comes back as a stop with no bodies, and a loop adds the return leg the same way. Dropping bodyless stops is what keeps “three systems worth landing on” from reading as five.

Tools

get_body_biology

What your own surface scan found. For a mapped body it also lists the species of each genus the body’s conditions admit, with each one’s value: a prediction from the conditions, and the sample decides.

{"type":"object","properties":{"body":{"type":"string","description":"The body name, or its short form such as \u00227 b\u0022. Leave out for the most recently scanned body that has biology on it."}},"required":[],"additionalProperties":false}

get_earlier_finds

What other Commanders have logged on a body, from other Commanders’ logged finds: each variant and how many finds there are of it, most first. Needs the Earlier biology finds from Canonn setting; with it off the answer says how to turn it on.

{"type":"object","properties":{"body":{"type":"string","description":"The body name, or its short form such as \u00227 b\u0022. Leave out for the body the Commander is at, or else the most recently scanned body that has biology on it."}},"required":[],"additionalProperties":false}

get_sampling_progress

How many specimens you have taken on this body, how far you have moved since the last one, and what is already finished here. For a genus with a known colony distance, also says how far is still to go, measured from every specimen of the set. While a set is open on the body you are on, “how much further” and “how much farther” reach it without the model and answer in one short line per genus.

{"type":"object","properties":{},"required":[],"additionalProperties":false}

get_unsold_exobiology

The organic data you have analysed and not sold: the total, how many analyses, how many carry the first footfall bonus, and any left out for want of a value.

{"type":"object","properties":{},"required":[],"additionalProperties":false}

clear_unsold_exobiology

Sets the total to zero from now. Protected: the keyword phrase, the panel and a hotkey reach it, and the model is refused.

{"type":"object","properties":{},"required":[],"additionalProperties":false}

plot_exobiology_route

A circuit through surveyed biology, with species and values. It avoids Thargoid systems.

{"type":"object","properties":{"from":{"type":"string","description":"System to start from. Leave out to start where the Commander is."},"jump_range":{"type":"number","description":"Jump range in light years. Defaults to the ship\u0027s own range."},"loop":{"type":"boolean","description":"Whether the circuit returns to the start. Defaults to true."},"max_distance_to_arrival":{"type":"number","description":"How far in-system a body may sit, in light seconds. Defaults to 10,000."},"max_results":{"type":"integer","description":"How many systems to visit. Defaults to 10."},"min_value":{"type":"integer","description":"The least a species must be worth to be listed, in credits; a body is a stop when any of its species clears it. Defaults to 1,000,000."},"radius":{"type":"number","description":"How far from the origin to look, in light years. Defaults to 200."}},"required":[],"additionalProperties":false}