Spglobal APIspglobal.com ↗
Search S&P Global Market Intelligence products, news, research, and events. Returns full body text, facets, segments, themes, and publication metadata.
What is the Spglobal API?
The S&P Global Market Intelligence API exposes 4 endpoints covering the site's product catalogue, news and research insights, and upcoming events. The search_products endpoint returns paginated product summaries with segment and theme facets, while get_content_details fetches the complete body text of any item returned by the other three endpoints — including maritime and trade intelligence product pages.
curl -X GET 'https://api.parse.bot/scraper/4716049e-543b-47e4-9339-13a3435ee4b1/search_products?query=trade' \ -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 spglobal-com-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.
"""Walkthrough: S&P Global Market Intelligence SDK — bounded, re-runnable."""
from parse_apis.spglobal_com_api import (
SPGlobal,
InsightContentType,
EventFormat,
ContentNotFound,
)
client = SPGlobal()
# Browse the product catalogue filtered by segment.
for product in client.products.search(segment="Maritime & Trade", limit=3):
print(product.title, product.content_type, product.segments)
# Drill into the first product's full page text via the derived content_id.
product = client.products.search(segment="Maritime & Trade", limit=1).first()
if product is not None:
detail = product.details()
print(detail.title, detail.body_text[:120] if detail.body_text else "")
# Search research insights and read one in full.
article = client.articles.search(
query="trade",
content_type=InsightContentType.RESEARCH,
limit=1,
).first()
if article is not None:
full = article.details()
print(full.title, full.published_at, full.themes)
# List upcoming webinars.
for event in client.events.list(event_format=EventFormat.WEBINAR, limit=5):
print(event.title, event.starts_at, "—", event.ends_at)
# Point-lookup by a known content_id with error handling.
try:
content = client.contents.get(
content_id="/content/spglobal/market-intelligence/us/en/does-not-exist"
)
print(content.title)
except ContentNotFound:
print("Content not found for the given id.")
print("exercised: products.search / product.details / articles.search / article.details / events.list / contents.get")
Searches S&P Global Market Intelligence product and solution pages (the site's Products & Solutions finder). One round trip returns one page of product summaries sorted alphabetically by title, the total number of matches, and facet counts (segments, themes, content types) usable as filter values. Omitting query returns the full catalogue. Pagination is caller-controlled via page (default 1) and rows (default 10, max 50); has_more tells whether a further page exists. A query with no matches returns an empty products array with total 0.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| rows | integer | Results per page, 1 to 50. |
| query | string | Free-text search term matched against product title and page body (e.g. one shape: trade). Omitted = all products. |
| theme | string | Exact theme label to filter by, as emitted in facets.themes[*].label and products[*].themes. An unknown label yields an empty result. |
| segment | string | Exact segment label to filter by, as emitted in facets.segments[*].label and products[*].segments (e.g. one shape: Maritime & Trade). An unknown label yields an empty result. |
{
"type": "object",
"fields": {
"page": "page number echoed",
"rows": "page size echoed",
"total": "total matching products on the site",
"facets": "object with segments, themes, content_types arrays of {label, count} for the current query",
"has_more": "true when page*rows < total",
"products": "array of product summaries: content_id (opaque id for get_content_details), title, description, content_type (Products or Solution Page), url, published_at (ISO 8601 UTC or null), segments/themes/locations/authors (string arrays), image_url (nullable)"
},
"sample": {
"data": {
"page": 1,
"rows": 5,
"total": 133,
"facets": {
"themes": [
{
"count": 25,
"label": "Financial Services"
}
],
"segments": [
{
"count": 19,
"label": "Maritime & Trade"
}
],
"content_types": [
{
"count": 86,
"label": "Products"
},
{
"count": 47,
"label": "Solution Page"
}
]
},
"has_more": true,
"products": [
{
"url": "https://www.spglobal.com/market-intelligence/en/solutions/products/ais-antenna-network",
"title": "AIS Antenna Network Partnerships",
"themes": [
"AIS Ship Tracking"
],
"authors": [],
"segments": [
"Maritime & Trade"
],
"image_url": null,
"locations": [],
"content_id": "/content/spglobal/market-intelligence/us/en/solutions/products/ais-antenna-network",
"description": "Get connected to S&P Global global AIS network that powers our vessel tracking services integrated into our market leading solution.",
"content_type": "Products",
"published_at": null
}
]
},
"status": "success"
}
}About the Spglobal API
What the API covers
The API surfaces four data collections from S&P Global Market Intelligence's public site. search_products queries the Products & Solutions catalogue and returns an array of product summaries — each carrying a content_id, title, description, content_type, segments, and themes — alongside facet counts for segments, themes, and content types. search_insights covers five content types (blog posts, news, research, podcasts, articles) sorted newest-first, with an additional locations facet and a published_at ISO 8601 timestamp per article.
Filtering and pagination
All three search and list endpoints accept page (1-based) and rows (1–50) for pagination and return a has_more boolean. search_products and search_insights both accept query, theme, and segment filters; values must exactly match the label strings emitted in the facets arrays of a prior response. search_insights adds a location filter and a content_type filter. list_events accepts query and event_format, and returns only events whose end date is in the future, ordered soonest first.
Full-text retrieval
Every item across all three listing endpoints carries a content_id that can be passed to get_content_details. That endpoint returns the full body_text of the page, authors, image_url, themes, segments, locations, and — for event items — starts_at and ends_at timestamps in ISO 8601 UTC. For non-event items those timestamp fields are null.
Coverage notes
The API reflects S&P Global Market Intelligence's publicly indexed catalogue. Content requiring a paid Market Intelligence subscription (gated research reports, financial data terminals, full analyst reports) is not exposed. The authors field is often empty for product and event records.
The Spglobal API is a managed, monitored endpoint for spglobal.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when spglobal.com 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 spglobal.com 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?+
- Map all S&P Global Market Intelligence maritime and trade intelligence products by querying
search_productswithquery: 'trade'and iteratingfacets.segments - Monitor newly published research and news on a specific topic by polling
search_insightswith aqueryand sorting bypublished_at - Build an event calendar by calling
list_eventsand filtering byevent_formatto separate webinars from in-person conferences - Extract the full description of a specific product page using
get_content_detailswith thecontent_idfrom asearch_productsresult - Enumerate all theme and segment taxonomy labels available on the site by inspecting
facetsarrays from a no-filtersearch_productscall - Identify S&P Global Market Intelligence coverage of a specific geography by filtering
search_insightswith alocationlabel from the facets - Aggregate article counts by content type across a topic by reading
facets.content_typesfrom asearch_insightsresponse
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does S&P Global have an official public developer API?+
What does `get_content_details` return that the search endpoints don't?+
get_content_details returns the full body_text of the page, which is absent from search result summaries. It also provides image_url and, for events, the starts_at and ends_at ISO 8601 UTC timestamps. Search endpoints return only title, description, and metadata fields.Can I retrieve historical events or past news articles beyond what the search index holds?+
list_events returns only upcoming events (end date in the future). Past events are not included. search_insights returns articles present in the site's public index, which may not include archived or gated historical content. You can fork this API on Parse and revise it to target a different date range or content scope if the index supports it.Does the API expose financial data — stock prices, earnings, credit ratings, or company financials?+
How do theme and segment filter values work, and what happens if I pass an unknown label?+
theme and segment must exactly match the label strings returned in the facets object of a prior response. Passing an unknown label returns zero results rather than an error, so always discover valid labels from a facets response before applying them as filters.