cURL
# Get all executions
curl -X GET "https://api.getcatalog.ai/v2/extract" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only completed executions
curl -X GET "https://api.getcatalog.ai/v2/extract?status=completed" \
-H "x-api-key: $CATALOG_API_KEY"
# Get first 50 executions
curl -X GET "https://api.getcatalog.ai/v2/extract?page_size=50" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only processing executions with custom page size
curl -X GET "https://api.getcatalog.ai/v2/extract?status=processing&page_size=100" \
-H "x-api-key: $CATALOG_API_KEY"
// Get all executions
const response = await fetch('https://api.getcatalog.ai/v2/extract', {
headers: {
'x-api-key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(`Found ${data.data.length} executions`);
data.data.forEach(exec => {
console.log(`${exec.execution_id}: ${exec.status} (created: ${exec.created_at})`);
});
// Get only processing executions
const processingResponse = await fetch(
'https://api.getcatalog.ai/v2/extract?status=processing',
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const processingData = await processingResponse.json();
console.log(`Found ${processingData.data.length} processing executions`);
// Filter by execution ID format to separate urls vs vendor input
const urlsExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-urls-')
);
const vendorExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-') && !exec.execution_id.startsWith('extract-urls-')
);
console.log(`${urlsExecutions.length} executions using urls`);
console.log(`${vendorExecutions.length} executions using vendor`);
import requests
# Get all executions
response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'}
)
data = response.json()
print(f"Found {len(data['data'])} executions")
for exec in data['data']:
print(f"{exec['execution_id']}: {exec['status']} (created: {exec['created_at']})")
# Get only failed executions
failed_response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'status': 'failed', 'page_size': 50}
)
failed_data = failed_response.json()
print(f"Found {len(failed_data['data'])} failed executions")
# Filter by execution ID format
urls_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-urls-')
]
vendor_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-') and not exec['execution_id'].startswith('extract-urls-')
]
print(f"{len(urls_executions)} executions using urls")
print(f"{len(vendor_executions)} executions using vendor")
{
"data": [
{
"execution_id": "extract-urls-965b1912-6af0-4ed8-b7e3-184b85e788b7",
"status": "completed",
"created_at": "2025-01-15T10:30:00.000Z"
},
{
"execution_id": "extract-nike-com-51d87084",
"status": "running",
"created_at": "2025-01-15T11:00:00.000Z"
},
{
"execution_id": "extract-adidas-com-660f9511",
"status": "pending",
"created_at": "2025-01-15T11:15:00.000Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
},
"meta": {}
}
Extract
List Extracts
List all extracts with status. Shows all extract jobs, their current status, and when they were created.
GET
/
v2
/
extract
cURL
# Get all executions
curl -X GET "https://api.getcatalog.ai/v2/extract" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only completed executions
curl -X GET "https://api.getcatalog.ai/v2/extract?status=completed" \
-H "x-api-key: $CATALOG_API_KEY"
# Get first 50 executions
curl -X GET "https://api.getcatalog.ai/v2/extract?page_size=50" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only processing executions with custom page size
curl -X GET "https://api.getcatalog.ai/v2/extract?status=processing&page_size=100" \
-H "x-api-key: $CATALOG_API_KEY"
// Get all executions
const response = await fetch('https://api.getcatalog.ai/v2/extract', {
headers: {
'x-api-key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(`Found ${data.data.length} executions`);
data.data.forEach(exec => {
console.log(`${exec.execution_id}: ${exec.status} (created: ${exec.created_at})`);
});
// Get only processing executions
const processingResponse = await fetch(
'https://api.getcatalog.ai/v2/extract?status=processing',
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const processingData = await processingResponse.json();
console.log(`Found ${processingData.data.length} processing executions`);
// Filter by execution ID format to separate urls vs vendor input
const urlsExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-urls-')
);
const vendorExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-') && !exec.execution_id.startsWith('extract-urls-')
);
console.log(`${urlsExecutions.length} executions using urls`);
console.log(`${vendorExecutions.length} executions using vendor`);
import requests
# Get all executions
response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'}
)
data = response.json()
print(f"Found {len(data['data'])} executions")
for exec in data['data']:
print(f"{exec['execution_id']}: {exec['status']} (created: {exec['created_at']})")
# Get only failed executions
failed_response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'status': 'failed', 'page_size': 50}
)
failed_data = failed_response.json()
print(f"Found {len(failed_data['data'])} failed executions")
# Filter by execution ID format
urls_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-urls-')
]
vendor_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-') and not exec['execution_id'].startswith('extract-urls-')
]
print(f"{len(urls_executions)} executions using urls")
print(f"{len(vendor_executions)} executions using vendor")
{
"data": [
{
"execution_id": "extract-urls-965b1912-6af0-4ed8-b7e3-184b85e788b7",
"status": "completed",
"created_at": "2025-01-15T10:30:00.000Z"
},
{
"execution_id": "extract-nike-com-51d87084",
"status": "running",
"created_at": "2025-01-15T11:00:00.000Z"
},
{
"execution_id": "extract-adidas-com-660f9511",
"status": "pending",
"created_at": "2025-01-15T11:15:00.000Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
},
"meta": {}
}
When to use: Monitor all your extraction operations in one place. Use this endpoint to:
- See all extraction executions you’ve started
- Filter by status (processing, completed, failed)
- Track when extraction jobs were initiated
- Find execution IDs for status checks
Request
string
required
Your API key for authentication
Query Parameters
string
Filter executions by status. Possible values:
"processing", "completed", "failed"Note: If not provided, all executions are returned regardless of status.Status Values:"processing"- Executions that are currently running or waiting to start (includespendingandrunningstates)"completed"- Executions that finished successfully"failed"- Executions that failed or were aborted
number
Number of executions to return (minimum: 1, maximum: 100, default: 20)Note: Executions are returned in reverse chronological order (most recent first).
Response
array
Array of execution summary objects
Show Execution Summary
Show Execution Summary
string
Unique execution identifier. Use this ID with
GET /v2/extract/{execution_id} to check detailed status and results.Formats:extract-urls-{uuid}- When usingurlsextract-{vendor}-{uuid}- When usingvendor(e.g.,extract-nike-com-51d87084)
string
Current execution statusPossible values:
"pending"- Execution is waiting to start (may be waiting for crawl)"running"- Execution is currently processing"completed"- Execution finished successfully"failed"- Execution failed or was aborted
string
ISO 8601 timestamp when the execution was created
object
Pagination metadata
Show Pagination Properties
Show Pagination Properties
number
Current page number (always 1 for this endpoint as it returns a single page)
number
Number of items per page (matches the requested
page_size parameter)number
Total number of items in this response (may be less than total available if filtered by status)
number
Total number of pages (calculated from total_items and page_size)
boolean
Whether there is a next page (always false for this endpoint)
boolean
Whether there is a previous page (always false for this endpoint)
object
Response metadata (currently empty for this endpoint)
cURL
# Get all executions
curl -X GET "https://api.getcatalog.ai/v2/extract" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only completed executions
curl -X GET "https://api.getcatalog.ai/v2/extract?status=completed" \
-H "x-api-key: $CATALOG_API_KEY"
# Get first 50 executions
curl -X GET "https://api.getcatalog.ai/v2/extract?page_size=50" \
-H "x-api-key: $CATALOG_API_KEY"
# Get only processing executions with custom page size
curl -X GET "https://api.getcatalog.ai/v2/extract?status=processing&page_size=100" \
-H "x-api-key: $CATALOG_API_KEY"
// Get all executions
const response = await fetch('https://api.getcatalog.ai/v2/extract', {
headers: {
'x-api-key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(`Found ${data.data.length} executions`);
data.data.forEach(exec => {
console.log(`${exec.execution_id}: ${exec.status} (created: ${exec.created_at})`);
});
// Get only processing executions
const processingResponse = await fetch(
'https://api.getcatalog.ai/v2/extract?status=processing',
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const processingData = await processingResponse.json();
console.log(`Found ${processingData.data.length} processing executions`);
// Filter by execution ID format to separate urls vs vendor input
const urlsExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-urls-')
);
const vendorExecutions = processingData.data.filter(
exec => exec.execution_id.startsWith('extract-') && !exec.execution_id.startsWith('extract-urls-')
);
console.log(`${urlsExecutions.length} executions using urls`);
console.log(`${vendorExecutions.length} executions using vendor`);
import requests
# Get all executions
response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'}
)
data = response.json()
print(f"Found {len(data['data'])} executions")
for exec in data['data']:
print(f"{exec['execution_id']}: {exec['status']} (created: {exec['created_at']})")
# Get only failed executions
failed_response = requests.get(
'https://api.getcatalog.ai/v2/extract',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'status': 'failed', 'page_size': 50}
)
failed_data = failed_response.json()
print(f"Found {len(failed_data['data'])} failed executions")
# Filter by execution ID format
urls_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-urls-')
]
vendor_executions = [
exec for exec in failed_data['data']
if exec['execution_id'].startswith('extract-') and not exec['execution_id'].startswith('extract-urls-')
]
print(f"{len(urls_executions)} executions using urls")
print(f"{len(vendor_executions)} executions using vendor")
{
"data": [
{
"execution_id": "extract-urls-965b1912-6af0-4ed8-b7e3-184b85e788b7",
"status": "completed",
"created_at": "2025-01-15T10:30:00.000Z"
},
{
"execution_id": "extract-nike-com-51d87084",
"status": "running",
"created_at": "2025-01-15T11:00:00.000Z"
},
{
"execution_id": "extract-adidas-com-660f9511",
"status": "pending",
"created_at": "2025-01-15T11:15:00.000Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
},
"meta": {}
}
⌘I