(19)Fresh off Patent
(45) Week of Oct 5, 2026 No. 5 3,852 lapsed 197 listed
API

Fresh Off Patent API

The weekly lists as JSON: every batch, every scored patent with its write-up, demand and sourcing checks, and the grace-period list. The data matches the website and updates when each USPTO batch is published.

Create an account Full reference

FIG. 3: an API request A key created on the account page is sent with each request. The API checks the key, the rate limit and the credit balance, then returns JSON with the credits charged and remaining. A request that fails a check returns an error and is not charged. ACCOUNT PAGE REQUEST API RESPONSE Create and name a key fop_live_… GET /v1/weeks/ {week}/picks Authorization: Bearer fop_live_… 1 Key valid 2 Under 60 a minute 3 Credits cover it 200 JSON X-Credits-Charged X-Credits-Remaining 401 · 402 · 429 not charged 606264 666870 FIG. 3

Swipe sideways to see the whole figure.

A request (64) carries a key created on the account page (60, 62). The API (66) checks the key, the rate limit and the credit balance before returning JSON with the credits charged and remaining (68). A request that fails a check returns an error (70) and is not charged.

Quick start

  1. Create a key

    Sign in and open Account, API. Name the key and copy it: it is shown once. An account can hold up to 10 keys, and any key can be revoked from the same page.

  2. Authenticate

    Send the key with every request, as a bearer token or in the X-API-Key header.

    curl https://api.freshoffpatent.com/v1/me \
      -H "Authorization: Bearer fop_live_…"
  3. Find the latest batch

    GET /v1/weeks lists the weekly batches, newest first, with the number of lapsed patents and of listed patents in each track. It is free.

    curl "https://api.freshoffpatent.com/v1/weeks?limit=2" \
      -H "Authorization: Bearer fop_live_…"
    [
      {
        "week": "2026-10-05",
        "issue": 5,
        "lapsed": 3852,
        "full_term": 397,
        "picks": {
          "mobility": 12,
          "consumer": 197,
          "software": 5,
          "electronics": 12,
          "food": 14,
          "energy": 10,
          "industrial": 12,
          "health": 10
        }
      },
      {
        "week": "2026-09-28",
        "issue": 4,
        "lapsed": 3843,
        "full_term": 0,
        "picks": {
          "consumer": 73
        }
      }
    ]
  4. Retrieve the patents

    GET /v1/weeks/{week}/picks returns the batch's patents in rank order, with the write-up, score, demand check and sourcing check for each. Each patent returned costs one credit.

    curl "https://api.freshoffpatent.com/v1/weeks/2026-10-05/picks?track=consumer&limit=1" \
      -H "Authorization: Bearer fop_live_…"
    {
      "total": 197,
      "items": [
        {
          "patent": "8820368",
          "url": "https://freshoffpatent.com/p/8820368",
          "title": "WALLET COMPOSED OF STEEL FABRIC",
          "headline": "Bi-fold wallet made from stainless-steel woven fabric",
          "summary": "A wallet constructed from woven stainless-steel mesh that is stitched into layers to…",
          "claim_plain": "The independent claim covered a wallet assembled from a back layer and multiple front…",
          "whats_new": "Using a fine stainless-steel woven mesh as both the structural material for wallet…",
          "track": "consumer",
          "category": "accessories",
          "category_name": "Bags, Jewelry & Accessories",
          "lapse_kind": "fee",
          "lapse_date": "2026-09-02",
          "week": "2026-10-05",
          "rank": 1,
          "owner": "STWART-STAND, PAUL",
          "filed": "2012-01-16",
          "granted": "2014-09-02",
          "cpc": [
            "A45C1/06",
            "A45C13/00"
          ],
          "score": {
            "total": 77,
            "demand": 60,
            "makeable": 80,
            "novelty": 82,
            "track_record": 80,
            "clear": 100
          },
          "making": {
            "process": "Cut woven stainless-steel mesh panels, stitch front layers to a back panel around…",
            "materials": [
              "stainless-steel woven mesh (Inox 316L suggested)",
              "stainless-steel thread or polyester/cotton stitching (possible)"
            ],
            "rating": 4,
            "note": "Requires cutting and sewing (or industrial stitching) of metal mesh and handling of…"
          },
          "demand": {
            "sold": "yes",
            "price_low": 65.0,
            "price_high": 66.0,
            "signals": "Multiple retailers offer RFID-blocking wallets with woven stainless steel or steel mesh…",
            "examples": [
              {
                "name": "Stainless Steel RFID Blocking Wallet",
                "seller": "Adafruit Industries",
                "price": "$66.00",
                "url": "https://www.adafruit.com/product/999"
              },
              {
                "name": "Stainless Steel Wallet (Stewart/STAND) – RFID blocking wallet",
                "seller": "STEWART/STAND",
                "price": "starting at about $65",
                "url": "https://www.stewartstand.com/pages/identity-theft-rfid-technology"
              }
            ]
          },
          "sourcing": {
            "found": "yes",
            "unit_low": 1.6,
            "unit_high": 1.8,
            "moq_typical": 1.0,
            "suppliers": [
              {
                "name": "Alibaba Wholesale RFID Anti-Theft Smart Wallet",
                "site": "Alibaba.com",
                "unit_price": "$1.60 - $1.80 per unit",
                "moq": "10-199 pieces",
                "url": "https://www.alibaba.com/product-introduction/Wholesale-RFID-Anti-Theft-Smart-Wallet_16009…"
              },
              {
                "name": "Sview Electronics Co., Ltd.",
                "site": "Made-in-China.com",
                "unit_price": "not listed",
                "moq": "1 piece",
                "url": "https://id.made-in-china.com/co_cnfulicom/product_Stainless-Steel-and-Aluminum-Alloy-Slim…"
              }
            ]
          },
          "related_in_force": [],
          "drawings": [
            "https://freshoffpatent.com/drawings/8820368-1r.png",
            "https://freshoffpatent.com/drawings/8820368-2.png"
          ],
          "links": {
            "google_patents": "https://patents.google.com/patent/US8820368",
            "uspto": "https://patentcenter.uspto.gov/applications/13350986"
          }
        }
      ]
    }

    Long text is shortened here. The API returns it in full.

Endpoints

RequestReturnsCost
GET /v1/mePlan and credit balanceFree
GET /v1/tracksTrack keys and descriptionsFree
GET /v1/weeksWeekly batches, newest firstFree
GET /v1/weeks/{week}/picksA batch's patents in rank order. Filter by track, category and min_score; page with limit and offset.1 credit per patent
GET /v1/patents/{number}One patent by US number1 credit
GET /v1/search?q=Archive search, best match first1 credit per result, minimum 1
GET /v1/lapsing-soonGrace-period list, earliest deadline first. Studio plan.1 credit per 10 rows

Field definitions for every response are in the full reference.

Credits

Each plan includes credits every calendar month. Monthly credits reset on the 1st and do not carry over. Purchased credits never expire and are spent after the monthly allowance.

PlanCredits per month
Free100
Pro2,000
Studio10,000
Credit pack5,000 for $10 $5, never expire
Credit pack25,000 for $40 $20, never expire

Every response carries X-Credits-Charged and X-Credits-Remaining headers. A request the balance cannot cover returns 402 and is not charged.

Errors and limits

Each account may make 60 requests per minute. Errors return JSON with a machine-readable code and a message.

{
  "error": "insufficient_credits",
  "message": "This request costs 25 credits and you have 12. Buy more on your account page or wait for next month's allowance."
}
StatusCodeMeaning
401missing_key, invalid_keyNo key sent, or the key is unknown or revoked
402insufficient_creditsThe balance does not cover the request; nothing is charged
403plan_requiredThe endpoint needs a higher plan
404not_foundNo such batch or patent
429rate_limitedMore than 60 requests in a minute

Examples

Python

import httpx

API = "https://api.freshoffpatent.com"
HEADERS = {"Authorization": "Bearer fop_live_…"}

week = httpx.get(f"{API}/v1/weeks", headers=HEADERS, params={"limit": 1}).json()[0]["week"]
page = httpx.get(f"{API}/v1/weeks/{week}/picks", headers=HEADERS,
                 params={"track": "consumer", "min_score": 70, "limit": 100}).json()
for p in page["items"]:
    print(p["score"]["total"], p["patent"], p["headline"])

JavaScript

const API = "https://api.freshoffpatent.com";
const headers = { Authorization: "Bearer fop_live_…" };

const [latest] = await (await fetch(`${API}/v1/weeks?limit=1`, { headers })).json();
const page = await (await fetch(`${API}/v1/weeks/${latest.week}/picks?min_score=70&limit=100`, { headers })).json();
page.items.forEach(p => console.log(p.score.total, p.patent, p.headline));

Use of the API is governed by the Terms. Each listing is a research lead, not legal advice.