Serebii APIserebii.net ↗
Access Pokémon stats, types, abilities, evolutions, Sleep data, and event distributions from Serebii.net via 3 structured JSON endpoints.
What is the Serebii API?
The Serebii.net API exposes 3 endpoints covering Pokédex entries, Pokémon Sleep data, and event distributions. The get_pokemon_comprehensive endpoint returns a full profile for any named Pokémon: base stats, types, abilities, evolution chain, location data, and Pokémon Sleep fields including sleep type specialty and main skill. A search endpoint covers the 223 Pokémon in the Sleep database with filtering by type, sleep type, and name substring.
curl -X GET 'https://api.parse.bot/scraper/06709f38-4bf5-468a-a99b-13a4ced1d410/get_pokemon_comprehensive?name=Pikachu' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace serebii-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Serebii Pokédex & Events — bounded walkthrough of the typed SDK."""
from parse_apis.serebii_pokédex_and_events_api import (
Serebii, SleepType, Type, PokemonNotFound,
)
client = Serebii()
# Search for Electric-type Pokémon in the Sleep database
for pkmn in client.pokemonsummaries.search(type=Type.ELECTRIC, sleep_type=SleepType.SNOOZING, limit=3):
print(pkmn.name, pkmn.number, pkmn.specialty)
# Drill into the first result for full detail
summary = client.pokemonsummaries.search(query="Pikachu", limit=1).first()
if summary:
pokemon = summary.details()
print(pokemon.name, pokemon.stats.hp, pokemon.stats.speed, pokemon.sleep_type)
# Fetch a Pokémon directly by name
pokemon = client.pokemons.get(name="Charizard")
print(pokemon.name, pokemon.types, pokemon.stats.attack)
# Typed error handling for a non-existent Pokémon
try:
client.pokemons.get(name="FakeMon")
except PokemonNotFound as exc:
print(f"Not found: {exc.name}")
# List recent events
for event in client.events.list(year="2024", limit=5):
print(event.name, event.pokemon, event.games)
print("exercised: pokemonsummaries.search / summary.details / pokemons.get / events.list / PokemonNotFound")
Get comprehensive data for a Pokémon, including stats, types, evolutions, and Pokémon Sleep data (sleep type, specialty, main skill). Fetches from the Scarlet/Violet Pokédex page and supplements with Sleep database info. Not all Pokémon have Sleep data; those fields are null when absent.
| Param | Type | Description |
|---|---|---|
| namerequired | string | Pokémon name (e.g., 'Bulbasaur', 'Pikachu', 'Charizard') |
{
"type": "object",
"fields": {
"name": "string - Pokémon name",
"image": "string - URL to Pokémon image",
"stats": "object with HP, Attack, Defense, Sp. Attack, Sp. Defense, Speed as integers",
"types": "array of type strings (e.g. 'grass', 'fire')",
"number": "string - National Pokédex number",
"abilities": "array of ability names",
"locations": "array of location strings",
"specialty": "string - Pokémon Sleep specialty (Berries, Ingredients, Skills) or null",
"evolutions": "array of evolution chain Pokémon names",
"main_skill": "string - Pokémon Sleep main skill description or null",
"sleep_type": "string - Pokémon Sleep type (Dozing, Snoozing, Slumbering) or null"
},
"sample": {
"data": {
"name": "Pikachu",
"image": "https://www.serebii.net/scarletviolet/pokemon/new/025.png",
"stats": {
"HP": 35,
"Speed": 90,
"Attack": 55,
"Defense": 40,
"Sp. Attack": 50,
"Sp. Defense": 50
},
"types": [
"electric"
],
"number": "025",
"abilities": [],
"locations": [],
"specialty": "Berries",
"evolutions": [],
"main_skill": "Charge Strength S\nIncreases Snorlax's Strength by 400.",
"sleep_type": "Snoozing"
},
"status": "success"
}
}About the Serebii API
Pokédex and Sleep Data
The get_pokemon_comprehensive endpoint accepts a Pokémon name (e.g. Bulbasaur, Charizard) and returns a stats object with six integer fields — HP, Attack, Defense, Sp. Attack, Sp. Defense, and Speed — alongside types (an array of lowercase type strings), abilities (array of ability names), locations (array of location strings), and evolutions (array of names in the evolution chain). For Pokémon included in Pokémon Sleep, the response also carries specialty (one of Berries, Ingredients, or Skills), sleep_type, and main_skill (a text description of the Pokémon's in-game Sleep skill). Fields not applicable to a given Pokémon return null.
Search and Filtering
The search_pokemon endpoint queries the Pokémon Sleep dataset of 223 Pokémon. You can pass any combination of query (case-insensitive name substring), type (lowercase type string such as fire or psychic), and sleep_type (one of Dozing, Snoozing, or Slumbering). Results include each Pokémon's name, number, types, sleep_type, and specialty. A limit parameter caps the result count. Because the underlying dataset is scoped to Pokémon Sleep, Pokémon not featured in that game will not appear in search results.
Event Distributions
The get_events endpoint returns distribution event records for a given year (e.g. 2023, 2024). Each event object includes name, associated pokemon (array), description, image URL, start_date, end_date, and the list of games the event applies to. If no year is supplied, the endpoint defaults to a current or recent year. Events are sourced from Serebii's event distribution archive and reflect historical and ongoing mystery gift or distribution campaigns.
The Serebii API is a managed, monitored endpoint for serebii.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when serebii.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official serebii.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a team planner that pulls base stats, types, and abilities for any Pokémon by name.
- Filter Pokémon Sleep candidates by sleep type (Dozing/Snoozing/Slumbering) and specialty to optimize island teams.
- Display full evolution chains for a Pokémon to guide in-game progression decisions.
- Aggregate event distribution calendars by year to track past and current mystery gift availability.
- Cross-reference a Pokémon's main_skill with Sleep team compositions to plan skill activations.
- Build a type-coverage tool by querying search_pokemon with type filters across the Sleep Pokédex.
- Populate game wikis or fan sites with up-to-date Pokédex numbers, images, and stat blocks.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Serebii.net have an official developer API?+
Does search_pokemon cover all 1,000+ Pokémon, or only a subset?+
get_pokemon_comprehensive endpoint can still retrieve full Pokédex data for Pokémon by name regardless of Sleep inclusion; you can fork the API on Parse and revise it to extend search coverage to the full National Pokédex.What does the get_events endpoint return and how is it filtered?+
name, pokemon (array of associated Pokémon), description, start_date, end_date, games, and an image URL. Pass an integer year parameter (e.g. 2020, 2024) to scope results to that year's distributions. Omitting the parameter returns a default recent year.