Skip to content

Quote of the Day API

A free daily Office quote paired with a YouTube clip. Updated every day at 6am UTC.

Live preview — this updates daily at 6am UTC. Add it to your site with the embed snippet below.

Embed snippet

Drop-in widget with video player and styled quote card. Two lines — no configuration needed.

<!-- All quotes -->
<div data-office-qotd></div>
<noscript>Powered by <a href="https://theofficelines.com">The Office Lines</a></noscript>

<!-- Safe-for-work quotes only -->
<div data-office-qotd="sfw"></div>
<noscript>Powered by <a href="https://theofficelines.com">The Office Lines</a></noscript>

<script src="https://theofficelines.com/embed-qotd.js" async></script>

Attribution

If you use this API, please include a visible link back to theofficelines.com using the attribution field in the response.

Endpoints

GET https://theofficelines.com/data/qotd.json
GET https://theofficelines.com/data/qotd-sfw.json

Static JSON files served from a CDN. No authentication, no rate limit. Cache-friendly — the response changes once per day. The qotd-sfw.json endpoint returns only safe-for-work quotes — no profanity, sexual content, or risqué material.

Response

{
  "date": "2026-02-21",
  "quote": {
    "id": "02_11_142",
    "line": "Sometimes you have to take a break from being the kind of boss that's always trying to teach people things.",
    "character": "Michael",
    "season": "02",
    "episode": "11",
    "title": "Booze Cruise"
  },
  "video": {
    "id": "dQw4w9WgXcQ",
    "title": "Michael's Booze Cruise Speech",
    "youtube": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "embed": "https://www.youtube.com/embed/dQw4w9WgXcQ",
    "thumbnail": "https://img.youtube.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
    "channel": "The Office"
  },
  "attribution": {
    "text": "Powered by The Office Lines",
    "url": "https://theofficelines.com",
    "quoteUrl": "https://theofficelines.com/?q=02_11_142"
  }
}

The video field is optional — it's included when a matching YouTube clip exists for the quote's scene.

Scene of the Day

GET https://theofficelines.com/data/sotd.json

A whole scene instead of a single line — always paired with a YouTube clip. Same rules as Quote of the Day: static CDN JSON, no auth, no rate limit, changes once per day.

{
  "date": "2026-07-07",
  "scene": {
    "slug": "s09e06-jims-radio-prank-on-dwight",
    "title": "Jim's Radio Prank on Dwight",
    "season": "09",
    "episode": "06",
    "episodeTitle": "The Boat",
    "lineCount": 54,
    "lines": [
      {
        "character": "Jim",
        "line": "Good afternoon!"
      }
    ]
  },
  "video": {
    "id": "lWY1p7kKgfI",
    "youtube": "https://www.youtube.com/watch?v=lWY1p7kKgfI",
    "embed": "https://www.youtube.com/embed/lWY1p7kKgfI",
    "thumbnail": "https://img.youtube.com/vi/lWY1p7kKgfI/hqdefault.jpg"
  },
  "attribution": {
    "text": "Powered by The Office Lines",
    "url": "https://theofficelines.com",
    "sceneUrl": "https://theofficelines.com/quotes/scenes/s09e06-jims-radio-prank-on-dwight/"
  }
}

lines is a short preview; lineCount is the full scene length. Link back with sceneUrl.

WordPress plugin

Sidebar widget, Gutenberg block, and [office_qotd] shortcode with click-to-play video, light/dark themes, and SFW mode. Caches locally — one API call per day.

JavaScript example

<noscript>Powered by <a href="https://theofficelines.com">The Office Lines</a></noscript>

<script>
fetch('https://theofficelines.com/data/qotd.json')
  .then(res => res.json())
  .then(data => {
    document.getElementById('quote').textContent = data.quote.line
    document.getElementById('character').textContent = data.quote.character

    // Video link (optional — only present for some quotes)
    if (data.video) {
      document.getElementById('video').href = data.video.youtube
    }

    // Attribution link (required)
    const link = document.getElementById('attribution')
    link.href = data.attribution.quoteUrl
    link.textContent = data.attribution.text
  })
</script>
Need the full dataset?
The Quote Data API gives structured access to all 60K lines — with character metadata, scene data, and video clips.
See pricing →