ActorStack.dev

Player profiles, match history, and the players who get less data

Profiles with as many past seasons as you ask for, one request per season each — and a deliberate reduction for players under 18.

By Oswaldo Carabano5 min read

Short answer

The player entity type returns one row per player, taking players either from explicit profile URLs or from whichever ranking table the input selects. `playerMatchHistoryYears` controls how many past seasons of match history to read, at one extra request per season per player, and defaults to 0 — the profile only. Players under 18 are returned with `birth_year` instead of a full birthdate and without a photo URL, which is a deliberate reduction rather than a gap in the source.

Key points

  • Players come from explicit URLs, or from the selected ranking table when no URLs are given.
  • `playerMatchHistoryYears` defaults to 0, so a profile run is one request per player unless you ask for history.
  • Each extra season of history is one extra request per player, so 100 players and 5 years is 600 requests rather than 100.
  • Players under 18 are returned with `birth_year` rather than a full birthdate, and with no photo URL.
  • That reduction is applied by the Actor, not inherited from the source, and it is stated rather than left for a reader to notice.
On this page4 sections

Player profiles are the entity type where a cost decision and a privacy decision both show up in the input schema.

Where the player list comes from

Either explicitly, through playerUrls, or implicitly: leave it empty and the Actor takes the players from the ranking table selected in the same input. The second is usually what you want, because assembling a few hundred profile URLs by hand is the part of this job nobody should be doing.

Match history, priced per season

playerMatchHistoryYears defaults to 0, which reads the profile only — one request per player. Each additional season is one additional request per player, so the arithmetic compounds:

PlayersYears of historyRequests
1000100
1005600
500105,500

The reduction for players under 18

Players under 18 are returned with birth_year rather than a full birthdate, and without a photo URL. The source publishes more than that; the Actor returns less.

Why a reduction gets documented

Because a field that is missing for a reason and a field that is missing by accident look identical in a dataset. Somebody who finds a null birthdate and assumes a scraping failure will go looking for a fix that does not exist — and somebody building a downstream product needs to know that this data was deliberately reduced rather than incompletely collected.

The same principle governs the rest of this catalogue: a limit that is chosen gets written down next to the limits that were imposed.

Frequently asked questions

How do I choose which players to fetch?
Either give explicit profile URLs in `playerUrls`, or leave it empty and the Actor takes the players from the ranking table selected in the same input.
What does match history cost?
One extra request per season per player. `playerMatchHistoryYears` defaults to 0, which reads the profile only; setting it to 5 for 100 players is 600 requests instead of 100.
Why do some players have no birthdate?
Players under 18 are returned with `birth_year` instead of a full birthdate, and without a photo URL. That is a deliberate reduction applied by the Actor rather than something missing from the source.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 9 Sept 2026
    TennisExplorer Scraper — Actor README and input schemaActorStack / Apify Store
  2. Law or regulatorchecked 9 Sept 2026
    Art. 6 GDPR — Lawfulness of processingRegulation (EU) 2016/679
Two players mid-rally on an indoor clay tennis court during a competitive match.
TennisExplorerReference

Field reference

What each of the four entity types returns, which fields are derived rather than read, and the one column that is recounted when the source publishes a flag instead.

7 min
A white measuring tape curving across a dark background, showing the numbers 15 to 45.
TennisExplorerReference

Rankings

Singles, doubles and the season race, for the current week or a past one — with the constraint that a historical week has to be a date the source actually published.

5 min
Two players mid-rally on an indoor clay tennis court during a competitive match.
TennisExplorerGuide

Scrape tennis results

A walkthrough of extracting tennis data: one entity type per run, the day boundary that has to be pinned, and the two enrichments that cost an extra request each.

8 min