Parse Title API - Fuzzy Match Pokemon Cards for Marketplace Integration
PokemonPriceTracker Team

Parse Title API: Fuzzy Matching for Pokemon Cards
The Problem with Card Data
Users describe cards in countless ways:
- "base set charizard holo"
- "Charizard 4/102 Base Set Unlimited"
- "1999 Charizard Holo Rare"
All refer to the same card! The Parse Title API uses fuzzy matching to find the correct card from natural language descriptions.
Why Parse Title API?
Unique to PokemonPriceTracker: No other Pokemon card API offers fuzzy matching with confidence scoring. This is a competitive advantage for:
- ✅ eBay listing enhancement
- ✅ Marketplace scrapers
- ✅ Bulk card imports
- ✅ Natural language search
- ✅ Collection management apps
Quick Start
curl -X POST https://www.pokemonpricetracker.com/api/v2/parse-title \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "base charizard holo"}'
Response:
{
"matches": [
{
"card": {
"name": "Charizard",
"setName": "Base Set",
"tcgPlayerId": "...",
"prices": { "market": 450.50 }
},
"confidence": 0.95
}
]
}
Use Case: eBay Listing Enhancement
Automatically add pricing data to eBay listings:
const axios = require('axios');
async function enhanceEbayListing(listingTitle) {
const API_KEY = process.env.POKEMON_API_KEY;
// Parse the listing title
const response = await axios.post(
'https://www.pokemonpricetracker.com/api/v2/parse-title',
{ title: listingTitle },
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
if (response.data.matches && response.data.matches.length > 0) {
const match = response.data.matches[0];
const card = match.card;
const confidence = match.confidence;
return {
cardName: card.name,
setName: card.setName,
marketPrice: card.prices.market,
confidence: (confidence * 100).toFixed(0) + '%',
suggestedPrice: (card.prices.market * 1.1).toFixed(2), // 10% markup
priceRange: {
low: (card.prices.market * 0.85).toFixed(2),
high: (card.prices.market * 1.15).toFixed(2)
}
};
}
return null;
}
// Example
const listing = "Pokemon Charizard Base Set Holo 4/102";
enhanceEbayListing(listing).then(data => {
console.log(`Suggested Price: $${data.suggestedPrice}`);
console.log(`Market Price: $${data.marketPrice}`);
console.log(`Confidence: ${data.confidence}`);
});
Use Case: Bulk Card Import
Process CSV files with card descriptions:
import pandas as pd
import requests
API_KEY = "your_api_key"
API_BASE = "https://www.pokemonpricetracker.com/api/v2"
def parse_bulk_cards(csv_file):
df = pd.read_csv(csv_file)
results = []
for idx, row in df.iterrows():
card_description = row['Description']
response = requests.post(
f"{API_BASE}/parse-title",
json={'title': card_description},
headers={'Authorization': f'Bearer {API_KEY}'}
)
if response.ok:
data = response.json()
if data['matches']:
match = data['matches'][0]
results.append({
'Original Description': card_description,
'Matched Card': match['card']['name'],
'Set': match['card']['setName'],
'Market Price': match['card']['prices']['market'],
'Confidence': f"{match['confidence'] * 100:.0f}%"
})
return pd.DataFrame(results)
# Process file
df = parse_bulk_cards('my_cards.csv')
df.to_csv('matched_cards.csv', index=False)
print(f"Processed {len(df)} cards")
React Marketplace Form Component
import React, { useState } from 'react';
import axios from 'axios';
interface ParsedCard {
name: string;
setName: string;
marketPrice: number;
confidence: number;
}
export function CardPriceChecker() {
const [description, setDescription] = useState('');
const [result, setResult] = useState<ParsedCard | null>(null);
const [loading, setLoading] = useState(false);
const handleCheck = async () => {
setLoading(true);
try {
const response = await axios.post('/api/parse-card', {
title: description
});
if (response.data.matches?.[0]) {
const match = response.data.matches[0];
setResult({
name: match.card.name,
setName: match.card.setName,
marketPrice: match.card.prices.market,
confidence: match.confidence
});
}
} catch (error) {
console.error('Error parsing card:', error);
} finally {
setLoading(false);
}
};
return (
<div className="card-checker">
<input
type="text"
value={description}
onChange={(e) => setDescription(e.target.value)}
placeholder="Enter card description..."
className="input"
/>
<button onClick={handleCheck} disabled={loading}>
{loading ? 'Checking...' : 'Check Price'}
</button>
{result && (
<div className="result">
<h3>{result.name}</h3>
<p>Set: {result.setName}</p>
<p>Market Price: ${result.marketPrice.toFixed(2)}</p>
<p>Confidence: {(result.confidence * 100).toFixed(0)}%</p>
</div>
)}
</div>
);
}
Confidence Scoring
The API returns confidence scores (0.0 - 1.0):
- 0.9 - 1.0: Excellent match, use with confidence
- 0.7 - 0.9: Good match, likely correct
- 0.5 - 0.7: Moderate match, verify manually
- < 0.5: Poor match, request clarification
Best Practices
- Always check confidence: Don't blindly use matches below 0.7
- Handle no matches: Provide user feedback when card isn't found
- Use specific descriptions: Include set name when possible
- Batch processing: Group requests to stay within rate limits
- Cache results: Store successful matches to reduce API calls
API Costs
- Free tier: 100 credits/day
- Parse Title: 1 credit per request
- Perfect for small-scale apps
Upgrade to API tier ($9.99/mo) for 20,000 credits/day.
Related Tutorials
PokemonPriceTracker Team
Related Articles

Pokemon Card API: Complete Developer's Guide to Card Data APIs (2025)
Complete Pokemon card API guide for developers. Learn about available APIs, integration methods, pricing data access, and how to build Pokemon card applications.
PokemonPriceTracker Team

A Developer's Guide to the Best Pokémon Card Price APIs (2025)
Building an app for Pokémon TCG? You need a reliable price API. This guide reviews the best options for developers and shows you how to get started.
PokemonPriceTracker Team
Pokemon Card Price API: Your Key to Real-Time & Historical TCG Data
Unlock the full potential of Pokemon TCG data with the PokemonPriceTracker API. Designed for developers, collectors, and businesses, our API provides seamless access to real-time, historical, and bulk card pricing information from major marketplaces. Power your applications and market analysis with comprehensive, developer-friendly data.

Team
Stay Updated
Subscribe to our newsletter for the latest Pokemon card market trends, investment opportunities, and exclusive insights delivered straight to your inbox.