Home / Recipes / Find who reported a story first
Worked queryFind who reported a story first
/search in hybrid mode. The parameters matter less
than the reasoning behind them, so that is most of what is below.
The request
GET /search
?q=<story>
&mode=hybrid
&from=<window start>
&to=<window end>
# order by published_at ascending Why these parameters
Deliberately not clustered — you want the individual articles and their timestamps. Sort ascending and the propagation order falls out, including which publishers were rewriting whom.
The obvious approach, and why it loses
The obvious approach is to collapse to stories and read the earliest member, which is faster and quietly wrong. A cluster records that an event was covered; the ordering inside it is not the thing the clustering was built to preserve, and a story that formed hours after the first report can carry an earliest member that is a later rewrite. The other common shortcut, sorting search results by relevance and reading the top one, answers a different question entirely — relevance ranking has no opinion about time. Unclustered search over an explicit window, sorted ascending on publication time, is the only shape where the thing you are reading is the thing you are measuring.
When it returns too much, or too little
Too much is the normal state: a busy story produces hundreds of near-identical articles inside the window and the interesting part is the first twenty minutes. Narrow the window rather than the query, and if you cannot guess the start, run a wide window first to find the approximate onset and then re-query tightly around it. Too little usually means the query is phrased the way the story was later summarised rather than the way it was first reported — early copy is often vaguer and uses fewer proper nouns than the version that circulates afterwards. Drop the specific terms that entered the story late and re-run before concluding there is nothing there.
How you would know it is working
Run it on a story where the answer is already published and known, such as one an outlet has publicly claimed and nobody has disputed, and see whether the trace agrees. Do that two or three times before trusting the method on a story where you do not know the answer. What you are calibrating is not accuracy but the size of the uncertainty: how often the index's earliest article is a wire pickup, how often several outlets land in the same minute, how often a print-first title appears hours late. Once you know that for the subjects you work on, you can state the finding with the right hedge rather than the wrong confidence.
When this is the wrong tool
Publication order is not attribution. The earliest timestamp in the index is the earliest article the index holds, which is not necessarily the first report — a paywalled or print-first outlet may have published earlier without being indexed at that moment, and some publishers backdate or update timestamps. Ordering also compresses to near-simultaneity during a fast-moving story, where several outlets publish within the same minute. Read this as a propagation trace, useful for seeing how a story travelled and who was rewriting whom, and not as evidence of who broke it, which is a claim that usually requires reporting rather than data.
Running it for real
Response fields, failure modes, adaptations and scheduling cost: Find who reported a story first, in the docs.