A complete REST API for SCP Wiki data - Items, Tales, Hubs, and Groups of Interest
Base URL: https://v0-scp-api.vercel.app/api/scp
Data Source: scp-data/scp-api
/api/scp/itemslimit - Number of items to return (e.g., 10)offset - Pagination offset (e.g., 0)series - Filter by series (e.g., series-1)exclude - Comma-separated list of fields to exclude from response (e.g., history,tags){
"data": [
{
"content_file": "content_series-1.json",
"created_at": "2008-07-26T03:27:00",
"creator": "Dantensen",
"domain": "scp-wiki.wikidot.com",
"history": [
{
"author": "Dantensen",
"author_href": "http://www.wikidot.com/user:info/dantensen",
"comment": "initial commit",
"date": "2008-07-26T03:27:00"
}
],
"hubs": [
"heritage-collection"
],
"images": [
"http://scp-wiki.wdfiles.com/local--files/scp-002/SCP002.jpg"
],
"link": "scp-002",
"page_id": 241,
"rating": 1234,
"references": [
"scp-001",
"scp-003"
],
"scp": "SCP-002",
"scp_number": 2,
"series": "series-1",
"tags": [
"euclid",
"building",
"furniture"
],
"title": "SCP-002",
"url": "http://www.scpwiki.com/scp-002"
}
],
"total": 7000,
"limit": 10,
"offset": 0
}/api/scp/items/[id]id - SCP identifier (e.g., scp-173) (e.g., scp-173)exclude - Comma-separated list of fields to exclude from response (e.g., history,images){
"data": {
"content_file": "content_series-1.json",
"created_at": "2008-07-25T20:49:00",
"creator": "Lt Masipag",
"domain": "scp-wiki.wikidot.com",
"history": [
{
"author": "Lt Masipag",
"author_href": "http://www.wikidot.com/user:info/lt-masipag",
"comment": "173 WOOT",
"date": "2008-07-25T20:49:00"
}
],
"hubs": [
"heritage-collection"
],
"images": [
"http://scp-wiki.wdfiles.com/local--files/scp-173/SCP-173.jpg"
],
"link": "scp-173",
"page_id": 173,
"rating": 3421,
"references": [],
"scp": "SCP-173",
"scp_number": 173,
"series": "series-1",
"tags": [
"euclid",
"sculpture",
"autonomous",
"statue"
],
"title": "SCP-173",
"url": "http://www.scpwiki.com/scp-173"
}
}/api/scp/items/[id]/contentid - SCP identifier (e.g., scp-173)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"content_file": "content_series-1.json",
"created_at": "2008-07-25T20:49:00",
"creator": "Lt Masipag",
"link": "scp-173",
"scp": "SCP-173",
"scp_number": 173,
"title": "SCP-173",
"raw_content": "<p><strong>Item #:</strong> SCP-173</p>\n<p><strong>Object Class:</strong> Euclid</p>\n<p><strong>Special Containment Procedures:</strong> Item SCP-173 is to be kept in a locked container at all times...</p>",
"raw_source": "[[include component:image-block name=SCP-173.jpg|caption=SCP-173]]\n\n**Item #:** SCP-173\n\n**Object Class:** Euclid..."
}
}/api/scp/taleslimit - Number of tales to return (e.g., 10)offset - Pagination offset (e.g., 0)year - Filter by creation year (e.g., 2008)exclude - Comma-separated list of fields to exclude from response (e.g., history,tags){
"data": [
{
"content_file": "content_2025.json",
"created_at": "2025-12-09T20:48:00",
"creator": "XHAWK77X",
"domain": "scp-wiki.wikidot.com",
"history": [
{
"author": "XHAWK77X",
"author_href": "http://www.wikidot.com/user:info/xhawk77x",
"comment": "",
"date": "2025-12-09T20:48:00"
}
],
"link": "a-foundation-tale",
"page_id": 12345,
"rating": 42,
"tags": [
"tale",
"doctor-bright"
],
"title": "A Foundation Tale",
"url": "http://www.scpwiki.com/a-foundation-tale"
}
],
"total": 5000,
"limit": 10,
"offset": 0
}/api/scp/tales/[id]id - Tale identifier (link field) (e.g., incident-239-b-clef-kondraki)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"content_file": "content_2008.json",
"created_at": "2008-08-21T08:13:00",
"creator": "AdminBright",
"domain": "scp-wiki.wikidot.com",
"link": "incident-239-b-clef-kondraki",
"page_id": 567,
"rating": 892,
"tags": [
"tale",
"dr-clef",
"dr-kondraki",
"scp-239"
],
"title": "Incident 239-B - Clef-Kondraki",
"url": "http://www.scpwiki.com/incident-239-b-clef-kondraki"
}
}/api/scp/tales/[id]/contentid - Tale identifier (e.g., incident-239-b-clef-kondraki)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"content_file": "content_2008.json",
"created_at": "2008-08-21T08:13:00",
"link": "incident-239-b-clef-kondraki",
"title": "Incident 239-B - Clef-Kondraki",
"raw_content": "<p>Dr. Clef walked into the containment chamber...</p>",
"raw_source": "Dr. Clef walked into the containment chamber..."
}
}/api/scp/hubslimit - Number of hubs to return (e.g., 10)offset - Pagination offset (e.g., 0)exclude - Comma-separated list of fields to exclude from response (e.g., references,tags){
"data": [
{
"content_file": "content_hubs.json",
"created_at": "2015-03-15T14:20:00",
"creator": "WrongJohnSilver",
"domain": "scp-wiki.wikidot.com",
"link": "broken-masquerade-hub",
"page_id": 1234567,
"rating": 234,
"references": [
"scp-001",
"broken-masquerade"
],
"tags": [
"hub",
"broken-masquerade"
],
"title": "Broken Masquerade Hub",
"url": "http://www.scpwiki.com/broken-masquerade-hub"
}
],
"total": 500,
"limit": 10,
"offset": 0
}/api/scp/hubs/[id]id - Hub identifier (link field) (e.g., canon-hub)exclude - Comma-separated list of fields to exclude from response (e.g., references){
"data": {
"content_file": "content_hubs.json",
"created_at": "2015-03-15T14:20:00",
"creator": "WrongJohnSilver",
"domain": "scp-wiki.wikidot.com",
"link": "canon-hub",
"page_id": 1234567,
"rating": 234,
"references": [
"scp-001",
"broken-masquerade"
],
"tags": [
"hub",
"broken-masquerade"
],
"title": "Broken Masquerade Hub",
"url": "http://www.scpwiki.com/broken-masquerade-hub"
}
}/api/scp/hubs/[id]/contentid - Hub identifier (e.g., canon-hub)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"content_file": "content_hubs.json",
"created_at": "2015-03-15T14:20:00",
"creator": "WrongJohnSilver",
"link": "canon-hub",
"title": "Broken Masquerade Hub",
"raw_content": "<html><body><div id=\"page-content\">...</div></body></html>"
}
}/api/scp/goilimit - Number of GOI articles to return (e.g., 10)offset - Pagination offset (e.g., 0)exclude - Comma-separated list of fields to exclude from response (e.g., history,tags){
"data": [
{
"created_at": "2014-07-01T23:35:00",
"creator": "Dr Reach",
"domain": "scp-wiki.wikidot.com",
"hubs": [
"goi-formats"
],
"images": [],
"link": "16th-wondertainment-donation",
"page_id": "22840540",
"rating": 118,
"tags": [
"_cc",
"_manna-charitable-foundation",
"dr-wondertainment",
"featured",
"goi-format",
"goi2014"
],
"title": "Sixteenth Wondertainment Donation - SCP Foundation",
"url": "https://scp-wiki.wikidot.com/16th-wondertainment-donation"
}
],
"total": 100,
"limit": 10,
"offset": 0
}/api/scp/goi/[id]id - GOI article identifier (link field) (e.g., 10-30-a-m)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"created_at": "2014-07-01T23:35:00",
"creator": "Dr Reach",
"domain": "scp-wiki.wikidot.com",
"hubs": [
"goi-formats"
],
"images": [],
"link": "16th-wondertainment-donation",
"page_id": "22840540",
"rating": 118,
"tags": [
"_cc",
"dr-wondertainment",
"goi-format"
],
"title": "Sixteenth Wondertainment Donation - SCP Foundation",
"url": "https://scp-wiki.wikidot.com/16th-wondertainment-donation"
}
}/api/scp/goi/[id]/contentid - GOI article identifier (e.g., 10-30-a-m)exclude - Comma-separated list of fields to exclude from response (e.g., history){
"data": {
"created_at": "2014-07-01T23:35:00",
"creator": "Dr Reach",
"link": "16th-wondertainment-donation",
"title": "Sixteenth Wondertainment Donation - SCP Foundation",
"raw_content": "<html><body><div id=\"page-content\">...</div></body></html>"
}
}/api/scp/searchq - Search query (e.g., statue)type - Content type: 'items', 'tales', or 'all' (e.g., items)limit - Number of results to return (e.g., 10)exclude - Comma-separated list of fields to exclude from response (e.g., history,tags){
"data": [
{
"content_file": "content_series-1.json",
"created_at": "2008-07-26T03:27:00",
"creator": "Dantensen",
"domain": "scp-wiki.wikidot.com",
"history": [
{
"author": "Dantensen",
"author_href": "http://www.wikidot.com/user:info/dantensen",
"comment": "initial commit",
"date": "2008-07-26T03:27:00"
}
],
"hubs": [
"heritage-collection"
],
"images": [
"http://scp-wiki.wdfiles.com/local--files/scp-002/SCP002.jpg"
],
"link": "scp-002",
"page_id": 241,
"rating": 1234,
"references": [
"scp-001",
"scp-003"
],
"scp": "SCP-002",
"scp_number": 2,
"series": "series-1",
"tags": [
"euclid",
"building",
"furniture"
],
"title": "SCP-002",
"url": "http://www.scpwiki.com/scp-002"
}
],
"total": 7000,
"limit": 10,
"offset": 0
}Fetch paginated SCP Items:
fetch('https://v0-scp-api.vercel.app/api/scp/items?limit=20&offset=40')Exclude specific fields from response:
// Exclude history and tags to reduce response size
fetch('https://v0-scp-api.vercel.app/api/scp/items/scp-173?exclude=history,tags,images')Get a specific SCP with full content:
// First get metadata
const item = await fetch('https://v0-scp-api.vercel.app/api/scp/items/scp-173').then(r => r.json())
// Then get full content
const content = await fetch('https://v0-scp-api.vercel.app/api/scp/items/scp-173/content').then(r => r.json())Search for SCP Items by keyword:
fetch('https://v0-scp-api.vercel.app/api/scp/search?q=keter&type=items')Filter Tales by year:
fetch('https://v0-scp-api.vercel.app/api/scp/tales?year=2008&limit=50')Get all hubs with pagination:
async function getAllHubs() {
let allHubs = []
let offset = 0
const limit = 50
while (true) {
const response = await fetch('https://v0-scp-api.vercel.app/api/scp/hubs?limit=${limit}&offset=${offset}')
const data = await response.json()
allHubs.push(...data.data)
if (data.data.length < limit) break
offset += limit
}
return allHubs
}Search with field exclusion for performance:
// Exclude heavy fields when you only need basic info
fetch('https://v0-scp-api.vercel.app/api/scp/search?q=doctor+bright&type=all&exclude=history,references')Get GOI articles with minimal data:
// Exclude raw_content and raw_source for listing
fetch('https://v0-scp-api.vercel.app/api/scp/goi?limit=20&exclude=raw_content,raw_source,history')