Discover/Poetry Foundation API
live

Poetry Foundation APIpoetryfoundation.org

Retrieve the Poetry Foundation's Poem of the Day — full text, author details, editor's note, epigraph, and recent daily selections — via a single API endpoint.

Endpoint health
verified 3h ago
get_poem_of_the_day
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the Poetry Foundation API?

The Poetry Foundation API exposes 1 endpoint, get_poem_of_the_day, returning 10 structured fields for the current daily featured poem: full plain-text body, HTML markup, title, authors with page URLs, epigraph, editor's note, and a reverse-chronological list of recent daily selections. It covers everything displayed on the Poem of the Day feature without requiring you to parse the site yourself.

This call costs2 credits / call— charged only on success
Try it

No input parameters required.

api.parse.bot/scraper/9bf59c1c-1ae4-4270-a0cf-fb22baadd6ab/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/9bf59c1c-1ae4-4270-a0cf-fb22baadd6ab/get_poem_of_the_day' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 poetryfoundation-org-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: Poetry Foundation Poem of the Day — fetch today's poem and browse recent selections."""
from parse_apis.poetryfoundation_org_api import PoetryFoundation, ParseError

client = PoetryFoundation()

# Fetch today's featured poem.
try:
    poem = client.poems.today()
except ParseError as e:
    print(f"Could not fetch poem of the day: {e.code}")
    raise
print(f"{poem.title} by {', '.join(a.name for a in poem.authors)}")
print(poem.text[:200])

# Show editor's note when the editors supplied one.
if poem.editors_note is not None:
    print(f"Editor's note: {poem.editors_note}")

# Browse the five most recent previous selections.
for recent in poem.recent_poems[:5]:
    authors = ", ".join(a.name for a in recent.authors)
    print(f"  {recent.date} — {recent.title} ({authors})")

print("exercised: poems.today (with ParseError handling)")
All endpoints · 1 totalmissing one? ·

Returns today's featured Poem of the Day as one object: the selection date (US Central calendar day), the editor's note when the editors supplied one (null otherwise), the poem title, its numeric poem_id and page URL, authors and translators (each with name, slug and poet page URL), the epigraph when present (null otherwise), the full poem as plain text (lines separated by newlines, stanzas by a blank line) and as the site's original HTML, and source-publication title/publisher/year and copyright credit when the site records them (null otherwise). recent_poems lists the ~20 previous daily selections (newest first) with date, title, poem_id, poem_url and authors, without poem text. One round trip; takes no parameters; never empty while the site publishes a daily poem.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "date": "ISO date (YYYY-MM-DD) the poem was featured",
    "text": "full poem as plain text; line breaks preserved, stanzas separated by a blank line",
    "title": "poem title",
    "authors": "array of {name, slug, url} for the poem's authors",
    "poem_id": "numeric poem identifier as a string, taken from the poem's page URL",
    "epigraph": "plain-text epigraph, or null",
    "poem_url": "poem page URL on the site",
    "body_html": "the poem body as the site's HTML",
    "editors_note": "plain-text editor's note, or null when none",
    "recent_poems": "array of previous daily selections, newest first, each {date, title, poem_id, poem_url, authors}",
    "translated_by": "array of {name, slug, url} translators; empty when the poem is not a translation",
    "copyright_credit": "plain-text copyright/permission credit, or null",
    "source_publication_year": "publication year as a number, or null",
    "source_publication_title": "title of the book/magazine the poem is credited to, or null",
    "source_publication_publisher": "publisher name, or null"
  },
  "sample": {
    "data": {
      "date": "2026-09-10",
      "text": "The light passes\nfrom ridge to ridge,\nfrom flower to flower—\nthe hepaticas, wide-spread\nunder the light\ngrow faint—\nthe petals reach inward,\nthe blue tips bend\ntoward the bluer heart\nand the flowers are lost.\n\nThe cornel-buds are still white,\nbut shadows dart\nfrom the cornel-roots—\nblack creeps from root to root,\neach leaf\ncuts another leaf on the grass,\nshadow seeks shadow,\nthen both leaf\nand leaf-shadow are lost.",
      "title": "Evening",
      "authors": [
        {
          "url": "https://www.poetryfoundation.org/poets/h-d",
          "name": "H.D.",
          "slug": "h-d"
        }
      ],
      "poem_id": "229690",
      "epigraph": null,
      "poem_url": "https://www.poetryfoundation.org/poems/51856/evening-56d22fe15dc07",
      "body_html": "<p>The light passes <br>from ridge to ridge, <br>from flower to flower— <br>the hepaticas, wide-spread <br>under the light <br>grow faint— <br>the petals reach inward, <br>the blue tips bend <br>toward the bluer heart <br>and the flowers are lost. <br> <br>The cornel-buds are still white, <br>but shadows dart <br>from the cornel-roots— <br>black creeps from root to root, <br>each leaf <br>cuts another leaf on the grass, <br>shadow seeks shadow, <br>then both leaf <br>and leaf-shadow are lost.</p>",
      "editors_note": "The poet H.D. was born on this day in 1886.",
      "recent_poems": [
        {
          "date": "2026-09-09",
          "title": "The Other Foot",
          "authors": [
            {
              "url": "https://www.poetryfoundation.org/poets/chip-livingston",
              "name": "Chip Livingston",
              "slug": "chip-livingston"
            }
          ],
          "poem_id": "1815025",
          "poem_url": "https://www.poetryfoundation.org/poetrymagazine/poems/1815025/the-other-foot"
        }
      ],
      "translated_by": [],
      "copyright_credit": "H.D., \"Evening\" from The Collected Poems of H.D. (New York: Boni and Liveright, 1925). Public domain.",
      "source_publication_year": 1925,
      "source_publication_title": "Collected Poems of H.D.",
      "source_publication_publisher": "Boni and Liveright"
    },
    "status": "success"
  }
}

About the Poetry Foundation API

What the API returns

The single get_poem_of_the_day endpoint returns today's featured poem as a structured object keyed to the US Central calendar day. The text field delivers the full poem as plain text with line breaks preserved and stanzas separated by blank lines. If you need to render the poem with the site's original formatting, body_html provides the poem body as HTML. The title, poem_id, and poem_url fields let you reference or link back to the canonical poem page.

Author and editorial metadata

The authors array contains one or more objects, each with name, slug, and url pointing to that poet's page on the Poetry Foundation site. This covers both authors and translators where credited. The editors_note field returns a plain-text annotation from the editorial team when one was written, and is null when none exists. Similarly, epigraph returns the poem's epigraph as plain text or null.

Recent poems list

Beyond today's selection, the response includes a recent_poems array of previous daily picks, ordered newest first. Each entry in that array carries date (ISO format), title, poem_id, poem_url, and an authors array matching the structure of the top-level authors field. This gives you a running historical record of daily selections in a single call — no additional requests needed.

Date handling

The date field reflects the US Central time zone calendar day, which is the same timezone the Poetry Foundation uses to advance the daily selection. Applications that display the poem in other timezones should account for this when determining whether the current day's poem has changed.

Reliability & maintenanceVerified

The Poetry Foundation API is a managed, monitored endpoint for poetryfoundation.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when poetryfoundation.org 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 poetryfoundation.org 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.

Last verified
3h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Display a daily poem widget on a blog or newsletter, pulling title, text, and authors from the response.
  • Build a poetry archive by persisting recent_poems entries over time, accumulating poem metadata day by day.
  • Render formatted poem pages using body_html when preserving the original line and stanza layout matters.
  • Show editorial context alongside a poem by surfacing editors_note when it is non-null.
  • Link readers to a poet's full catalog by constructing author profile links from the slug and url fields in authors.
  • Track how often specific poets are featured as Poem of the Day by aggregating the authors field across recent_poems.
  • Populate a reading app with daily content, using epigraph to display introductory text when present.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does the Poetry Foundation offer an official developer API?+
The Poetry Foundation does not publish a documented public developer API. This Parse API provides structured access to the Poem of the Day feature and recent selections.
What does the `recent_poems` array actually include?+
Each entry in recent_poems contains the feature date, poem title, numeric poem_id, poem_url, and an authors array with name, slug, and URL for each credited author. It does not include the full poem text or editor's note for past entries — only today's top-level response includes those fields.
Is the poem text returned with its original formatting?+
The text field preserves line breaks and uses blank lines to separate stanzas, reflecting the poem's structure as plain text. The body_html field returns the site's HTML markup for cases where you need finer rendering control.
Can I retrieve a specific past poem by date or poem ID?+
Not currently. The API returns today's Poem of the Day and a list of recent selections with their metadata, but does not accept a date or poem_id as a parameter to fetch a historical poem's full text. You can fork this API on Parse and revise it to add a parameterized historical poem endpoint.
Does the API cover poet biography pages or the full poem catalog?+
Not currently. The API is scoped to the daily poem feature, returning author name, slug, and URL but not biographical text or a browsable poem catalog. You can fork this API on Parse and revise it to add endpoints for poet profiles or catalog browsing.
Page content last updated . Spec covers 1 endpoint from poetryfoundation.org.
Related APIs in News MediaSee all →
rpo.library.utoronto.ca API
Browse thousands of poems and poet profiles, search by title or author, explore poetry timelines and glossaries, and discover random poems to expand your literary knowledge. Access detailed poet biographies, collections, honours, and bibliographies to deepen your understanding of poetry history and literature.
z.arlmy.me API
Access data from z.arlmy.me.
nytimes.com API
Retrieve the latest news articles from The New York Times organized by topic sections like politics, business, technology, and more. Stay informed with current stories from one of the world's leading news sources without manually browsing their website.
quotes.toscrape.com API
Discover famous quotes along with their authors and subject tags to build inspiration collections, create motivational content, or find wisdom on specific topics. Access a curated library of quotes organized by author and tagged by theme for easy browsing and discovery.
poedb.tw API
Search and retrieve comprehensive Path of Exile game data including items, gems, leagues, and game mechanics like bleeding effects across both PoE 1 and PoE 2. Get detailed information about specific items and categories, or browse current league information to stay updated on the latest game content.
apnews.com API
Search for news articles from Associated Press on any topic and retrieve complete article details including headlines, summaries, and content with easy pagination. Stay informed with current news stories by finding and reading articles on subjects that matter to you.
dailycal.org API
Search and browse Daily Californian articles by section—including opinion and editorials—sorted by publication date, then read the full text of any article you find. Access complete article content organized by topic to stay informed on UC Berkeley campus news and commentary.
pewresearch.org API
Search and retrieve Pew Research Center publications, reports, and expert profiles across a wide range of topics, including technology, politics, science, religion, and social trends. Access detailed report content, key findings, charts, and methodology information, and filter results by topic, format, or region to stay informed on the latest research and data.