# Bassmaster Tournament Results & Standings Scraper (`maximedupre/bassmaster`) Actor

Collect Bassmaster tournament results and standings for selected seasons and series. Choose final, daily, or both views and save angler ranks, fish counts, weights, payouts, event details, and source links. Unpublished payout and bonus values stay null.

- **URL**: https://apify.com/maximedupre/bassmaster.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Sports, Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 92.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.45 / 1,000 standings entries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **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 usage examples, see the [API](#api) section below.

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).

# README

### 🎣 Bassmaster results for anglers, analysts, and developers

For fishing researchers, sports analysts, and developers, this Actor collects Bassmaster tournament results and standings for selected seasons and series. Each saved row keeps an angler's event, standings view, rank, fish count, weight, payout, and source link together. That gives you structured data for reports and comparisons without copying public result pages by hand.

**Use cases**

- Use **[Bassmaster Elite Leaderboard Today](https://apify.com/maximedupre/bassmaster/examples/bassmaster-elite-leaderboard-today)** to review the selected competition.
- Use **[Bassmasters Live Leaderboard Today](https://apify.com/maximedupre/bassmaster/examples/bassmasters-live-leaderboard-today)** to inspect the selected event.
- Run **[Bassmaster Elite Live](https://apify.com/maximedupre/bassmaster/examples/bassmaster-elite-live)** to inspect the selected event.
- Use **[Bassmaster Leaderboard Today](https://apify.com/maximedupre/bassmaster/examples/bassmaster-leaderboard-today)** to check the selected competition.
- Review **[Bassmaster Elite Standings](https://apify.com/maximedupre/bassmaster/examples/bassmaster-elite-standings)** for entries from one series.
- Collect **[Bassmaster Tournament Results](https://apify.com/maximedupre/bassmaster/examples/bassmaster-tournament-results)** for one tournament.
- Compare **[Bassmaster Tournament Standings](https://apify.com/maximedupre/bassmaster/examples/bassmaster-tournament-standings)** across selected views.

#### 📊 Bassmaster tournament rows for standings and payouts

**What each row contains**

Each saved row represents one angler's result for one tournament view. It keeps the series, event details, angler details, standings context, performance, payout, and source details together. A row can describe final standings or one competition day.

**Source limits**

Daily standings appear only when Bassmaster publishes them. A final-only row is marked with `final-only` coverage. If a source does not publish a payout or bonus, the output keeps that value as `null`. Some series publish a total measurement such as inches instead of weight, so the output keeps the source value and unit without converting it.

#### 🚀 Choose Bassmaster seasons and standings views

**Steps**

1. Choose a start season, an end season, one or more series, and a standings view.
2. Choose `Maximum results` only when you want to cap the number of saved rows.
3. Run the Actor and open the dataset to read or export the rows.

**Keep a test small**

Use one season, one series, and a positive result limit for a small test. Leave `Maximum results` empty to return all available results until the source is exhausted. A wider season or series scope uses the same settings across the selected scope.

**Public source access**

The Actor reads Bassmaster's public result data. No Bassmaster API key or account is required. This Actor does not provide live tournament tracking, forecasts, or fishing advice.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
|---|---|---|
| `startYear` | integer | First season to include. Use the same year as `endYear` for one season. |
| `endYear` | integer | Last season to include. It must be the same as or later than `startYear`. |
| `series` | array of strings | Chooses one or more series: `elite`, `opens`, `classic`, `college`, `high_school`, `junior`, `kayak`, or `bass_nation`. |
| `standingsView` | string | Chooses `final`, `daily`, or `both`. Events with final-only source coverage do not get made-up daily rows. |
| `maxItems` | integer | Optional positive result limit. Leave it empty to return all available results until the source is exhausted. |

**Successful input example**

The example below is the public input from a successful beta run for one 2024 High School final-standings result.

```json
{
  "startYear": 2024,
  "endYear": 2024,
  "series": [
    "high_school"
  ],
  "standingsView": "final",
  "maxItems": 1
}
```

#### 🧾 Output

**Output fields**

| Field | Type | What it does |
|---|---|---|
| `series` | string | Bassmaster series for the tournament. |
| `event` | object | Details about the tournament. |
| `event.name` | string | Published tournament name. |
| `event.location` | string | Published tournament location. |
| `event.startDate` | string | Tournament start date in ISO 8601 format. |
| `event.endDate` | string | Tournament end date in ISO 8601 format. |
| `angler` | object | Details about the angler. |
| `angler.name` | string | Published angler name. |
| `angler.hometown` | string | Published angler hometown, when available. |
| `standings` | object | Standings view and source coverage for the row. |
| `standings.view` | string | Shows whether the row is `final` or `daily`. |
| `standings.day` | number | Competition day number for a daily row, when available. |
| `standings.coverage` | string | Shows `daily-and-final` or `final-only` source coverage. |
| `performance` | object | Angler performance for the standings row. |
| `performance.rank` | number | Published rank for the row. |
| `performance.fishCount` | number | Number of fish published for the row. |
| `performance.totalWeight` | object | Published weight or a source-native total measurement. |
| `performance.totalWeight.display` | string | Total weight in pounds and ounces, when published. |
| `performance.totalWeight.ounces` | number | Total weight as a number of ounces, when published. |
| `performance.totalWeight.sourceMeasurement` | object | Source-native measurement used when weight is not published. |
| `performance.totalWeight.sourceMeasurement.value` | number | Numeric value in the source unit. |
| `performance.totalWeight.sourceMeasurement.unit` | string | Unit used by the source, such as `inches`. |
| `performance.totalWeight.sourceMeasurement.display` | string | Source measurement as published, when available. |
| `performance.bigBassWeight` | object | Published big bass weight, when available. |
| `performance.bigBassWeight.display` | string | Big bass weight in pounds and ounces. |
| `performance.bigBassWeight.ounces` | number | Big bass weight as a number of ounces. |
| `payout` | object | Prize amounts for the row. |
| `payout.currency` | string | Currency used for payout amounts. |
| `payout.total` | number or null | Total payout in US dollars, or `null` when not published. |
| `payout.basePrize` | number or null | Base prize in US dollars, or `null` when not published. |
| `payout.cashBonus` | number or null | Cash bonus in US dollars, or `null` when not published. |
| `source` | object | Details for checking the source row. |
| `source.url` | string | Bassmaster results page used for the row. |
| `source.retrievedAt` | string | Time when the source result was retrieved in UTC. |

The `performance.totalWeight` object has `display` and `ounces` when the source publishes weight. It has `sourceMeasurement` when the source publishes another total measurement. Payout values stay `null` when the source does not publish them.

**Genuine row from a successful beta run**

```json
{
  "series": "elite",
  "event": {
    "name": "2024 Gamakatsu Bassmaster Elite at Toledo Bend",
    "location": "Toledo Bend Reservoir, Many, LA",
    "startDate": "2024-02-22T06:00:00.000Z",
    "endDate": "2024-02-26T05:59:59.000Z"
  },
  "angler": {
    "name": "Kyoya Fujita",
    "hometown": "Lake Forest, CA"
  },
  "standings": {
    "view": "final",
    "coverage": "daily-and-final"
  },
  "performance": {
    "rank": 1,
    "fishCount": 20,
    "totalWeight": {
      "display": "100-13",
      "ounces": 1613
    }
  },
  "payout": {
    "currency": "USD",
    "total": 103000,
    "basePrize": 100000,
    "cashBonus": 3000
  },
  "source": {
    "url": "https://www.bassmaster.com/tournament/2024-bassmaster-elite-at-toledo-bend/results/?day=0",
    "retrievedAt": "2026-08-14T16:58:21.578Z"
  }
}
```

**Source-native measurement example**

This genuine beta-run row keeps an inches measurement because the source did not publish weight or payout values for it.

```json
{
  "series": "kayak",
  "event": {
    "name": "2024 Yamaha Rightwaters Bassmaster Kayak Series at Possum Kingdom Lake scored by TourneyX",
    "location": "Possum Kingdom Lake, Graford, TX",
    "startDate": "2024-04-14T05:00:00.000Z",
    "endDate": "2024-04-15T04:59:59.000Z"
  },
  "angler": {
    "name": "Jason Isaacs",
    "hometown": "OH, United States"
  },
  "standings": {
    "view": "final",
    "coverage": "final-only"
  },
  "performance": {
    "rank": 1,
    "fishCount": 5,
    "totalWeight": {
      "sourceMeasurement": {
        "value": 101.25,
        "unit": "inches",
        "display": "101.25\""
      }
    }
  },
  "payout": {
    "currency": "USD",
    "total": null,
    "basePrize": null,
    "cashBonus": null
  },
  "source": {
    "url": "https://www.bassmaster.com/tournament/2024-yamaha-rightwaters-bassmaster-kayak-series-at-possum-kingdom-lake-powered-by-tourneyx/results/?day=0",
    "retrievedAt": "2026-08-14T17:07:13.215Z"
  }
}
```

#### 💳 Pricing

**Charged event**

This Actor uses pay-per-event pricing. The current price is `$0.00045` for each saved angler-level standings entry. An entry can represent a daily or final view for a selected tournament. The charge is tied to the saved entry.

#### 🔌 Integrations

**Apify connections**

After a run, use the Apify dataset view or its API link to read and export the saved rows.

Watch the walkthrough here:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Does this Actor track a live leaderboard?

No. It collects public tournament results available during the run. It is not a live tracking feed.

##### Can I get final and daily standings together?

Yes. Set `standingsView` to `both`. The output marks each row as `final` or `daily` and includes its source coverage.

##### What happens when an event has no daily standings?

The row uses `final-only` for `standings.coverage`. The Actor does not create daily rows that the source does not publish.

##### Are missing payouts changed to zero?

No. `payout.total`, `payout.basePrize`, and `payout.cashBonus` stay `null` when Bassmaster does not publish those values.

##### Why does totalWeight sometimes use sourceMeasurement?

Some events publish a total measurement that is not weight. The Actor keeps its numeric value, unit, and display text instead of converting it.

##### What does an empty Maximum results field do?

It returns all available results until the source is exhausted.

##### Can I choose more than one series or season?

Yes. Pick one or more series and a start and end season. The same settings apply across the selected scope.

##### Do I need a Bassmaster API key?

No. The Actor uses Bassmaster's public data, and no credential is required.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~bassmaster/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Sofascore Live Events Scraper](https://apify.com/maximedupre/sofascore-live-events-scraper) collects public sports events, fixtures, scores, and tournament data across many sports.
- [ESPN MCP Server](https://apify.com/maximedupre/espn-mcp-server) provides structured ESPN scoreboards, schedules, standings, and game details.
- [Bassmaster Tournament Results & Standings Scraper](https://apify.com/jungle_synthesizer/bassmaster-tournament-results-standings-scraper) offers flat Bassmaster result and standings rows from a public source.
- [NCAA.com Stats Scraper](https://apify.com/crawlerbros/ncaa-stats-scraper) collects team and player leaderboards plus conference standings for college sports.
- [Limitless TCG - Pokemon Tournaments & Decklists Scraper](https://apify.com/jungle_synthesizer/limitlesstcg-pokemon-tournaments-scraper) collects tournament standings, player records, and decklists for Pokemon TCG events.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `startYear` (type: `integer`):

First season to include. Use the same year as End season for one season.

## `endYear` (type: `integer`):

Last season to include. It must be the same as or later than Start season.

## `series` (type: `array`):

Choose one or more series. Only tournaments from these series are included.

## `standingsView` (type: `string`):

Choose final standings, daily standings, or both. Some events have final standings only. The Actor marks that coverage and does not make up daily rows.

## `maxItems` (type: `integer`):

Optional positive number of results to return. Leave it empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "startYear": 2024,
  "endYear": 2024,
  "series": [
    "elite"
  ],
  "standingsView": "final",
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

Bassmaster tournament standings returned by this run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startYear": 2024,
    "endYear": 2024,
    "series": [
        "elite"
    ],
    "standingsView": "final",
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/bassmaster").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startYear": 2024,
    "endYear": 2024,
    "series": ["elite"],
    "standingsView": "final",
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/bassmaster").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startYear": 2024,
  "endYear": 2024,
  "series": [
    "elite"
  ],
  "standingsView": "final",
  "maxItems": 100
}' |
apify call maximedupre/bassmaster --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/bassmaster"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sLIkXYOtqNqu1PD90/builds/Cu6t1twaN68eAppzA/openapi.json
