# TennisExplorer: upcoming WTA matches and prices

**Use case:** 

One row per match: the tournament, both players with their pages and seeds, the set-by-set score with tiebreak points, the winner, and the decimal prices where the site prints them. This is the card rather than the results table, so it mixes matches that have not started with ones already finished, and every row states which of the two it is.

## Input

```json
{
  "searchUrl": "",
  "section": "matches",
  "tour": "wta-single",
  "dateFrom": "",
  "dateTo": "",
  "maxDays": 0,
  "maxMatches": 100,
  "monitoringMode": false,
  "resetMonitoringState": false,
  "players": [],
  "tournaments": [],
  "matchTypes": [],
  "keywords": [],
  "keywordMatch": "any",
  "excludeKeywords": [],
  "minOdds": 0,
  "maxOdds": 0,
  "requireOdds": false,
  "onlyCompleted": false,
  "onlyUpcoming": false,
  "useProxy": false
}
```

## Output

```json
{
  "matchId": {
    "label": "Match Id",
    "format": "string"
  },
  "date": {
    "label": "Date",
    "format": "string"
  },
  "tournament": {
    "label": "Tournament",
    "format": "string"
  },
  "player1Name": {
    "label": "Player1 Name",
    "format": "string"
  },
  "player2Name": {
    "label": "Player2 Name",
    "format": "string"
  },
  "scoreText": {
    "label": "Score Text",
    "format": "string"
  },
  "winnerName": {
    "label": "Winner Name",
    "format": "string"
  },
  "player1Odds": {
    "label": "Player1 Odds",
    "format": "string"
  },
  "player2Odds": {
    "label": "Player2 Odds",
    "format": "string"
  },
  "source": {
    "label": "Source",
    "format": "string"
  },
  "status": {
    "label": "Status",
    "format": "string"
  },
  "matchUrl": {
    "label": "Match Url",
    "format": "string"
  },
  "rowId": {
    "label": "Row Id",
    "format": "string"
  },
  "searchedTour": {
    "label": "Searched Tour",
    "format": "string"
  },
  "section": {
    "label": "Section",
    "format": "string"
  },
  "startTimeLocal": {
    "label": "Start Time Local",
    "format": "string"
  },
  "tournamentUrl": {
    "label": "Tournament Url",
    "format": "string"
  },
  "matchType": {
    "label": "Match Type",
    "format": "string"
  },
  "player1Display": {
    "label": "Player1 Display",
    "format": "string"
  },
  "player1Slug": {
    "label": "Player1 Slug",
    "format": "string"
  },
  "player1Url": {
    "label": "Player1 Url",
    "format": "string"
  },
  "player1Seed": {
    "label": "Player1 Seed",
    "format": "string"
  },
  "player2Display": {
    "label": "Player2 Display",
    "format": "string"
  },
  "player2Slug": {
    "label": "Player2 Slug",
    "format": "string"
  },
  "player2Url": {
    "label": "Player2 Url",
    "format": "string"
  },
  "player2Seed": {
    "label": "Player2 Seed",
    "format": "string"
  },
  "isCompleted": {
    "label": "Is Completed",
    "format": "string"
  },
  "playerOrder": {
    "label": "Player Order",
    "format": "string"
  },
  "winner": {
    "label": "Winner",
    "format": "string"
  },
  "player1SetsWon": {
    "label": "Player1 Sets Won",
    "format": "string"
  },
  "player2SetsWon": {
    "label": "Player2 Sets Won",
    "format": "string"
  },
  "sets": {
    "label": "Sets",
    "format": "string"
  },
  "resultRaw": {
    "label": "Result Raw",
    "format": "string"
  },
  "oddsText": {
    "label": "Odds Text",
    "format": "string"
  },
  "headToHead": {
    "label": "Head To Head",
    "format": "string"
  },
  "scrapedAt": {
    "label": "Scraped At",
    "format": "string"
  },
  "searchUrl": {
    "label": "Search Url",
    "format": "string"
  },
  "note": {
    "label": "Note",
    "format": "string"
  },
  "matchesRead": {
    "label": "Matches Read",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [TennisExplorer Scraper & New-Result Monitor - Odds & Scores](https://apify.com/neverempty/tennisexplorer-scraper.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/neverempty/tennisexplorer-scraper.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/neverempty/tennisexplorer-scraper.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
