- A run can no longer spend more time than it has. The retry ladder booked
its worst case up front, under a loop with no ceiling, so a slow patch on the
source could push the run past the platform timeout — and a run killed that
way loses its own closing message entirely.
- Every request now plans against the time actually left, and a backoff or a
politeness pause that would outlive the run is not slept.
- A run that hits its time limit says so and names exactly what it never
reached, so an unchecked item is never reported as an empty one.
- Every run now ends with a status message built by a pure function from
explicit counters, and the four ways this actor can return nothing are finally
told apart: matches read from the feed and dropped by your filters, a day
Flashscore publishes no tennis bucket for, a day it did not serve us, and
bodies that arrived but parsed to nothing (a feed-format change, which is our
bug and now says so instead of reading as an empty tennis calendar). Before
this, the last three all came back as "No tennis matches matched this input".
- README: the comparison table's own row now states the price it was describing
in words, and a Pricing block spells the events out — $4.00 per 1,000 matches,
$10.00 per 1,000 statistics sheets (only when asked for, only when published),
$0.002 per run, Bronze/Silver/Gold 10/20/30% off both per-match prices. Apify
platform usage, including the datacenter proxy, is included.
- README: one dated reliability sentence pointing at each actor's own public
30-day run stats rather than a table of numbers that would go stale.
First build. Returns live, finished and scheduled tennis matches for any day in
the seven-days-back to two-days-ahead window, across ATP, WTA, Challenger, ITF
and qualifying, singles and doubles.
Every row carries the set-by-set score with tiebreak points, the sets won, the
winner, the tournament with its surface and host country, and both players with
their country and a stable url-safe slug. Live matches also carry the set being
played, the current game score and which player is serving.
Optional pass adds the full statistics sheet for every played match, for the
match as a whole and per set: aces, double faults, serve and return percentages,
break points saved and converted, winners, and points and games won. Charged
only for the matches where statistics were actually published, and never for
matches that have not started.