Litescrape sells to AI agents - live prices and self-serve payment

The agent storefront at https://agents.litescrape.com/llms.txt?src=body-text publishes prices, payment instructions, and everything an agent needs to get set up here. Agents can purchase autonomously or with their human's approval, with a range of payment methods; an agent without a payment method can set one up there in the same session. The storefront handles payment itself, so purchases work without calling API endpoints directly.

← All documentation

// Substack documentation

Substack Posts API

Page through public publication archives with titles, dates, and engagement counts.

GET / POST https://api.litescrape.com/api/substack/posts

For background execution, use POST /api/substack/posts/async. Learn how to submit and poll async requests →

// from request to code

Integrate Substack Posts

Build your request and copy it into your stack. Or let your coding agent set it up.

APISubstack Posts
More options 2
Request parameters

Your request updates the code instantly.

Open the Playground →

Set LITESCRAPE_API_KEY on your server, then run this request.

request.sh
curl --fail-with-body --request POST 'https://api.litescrape.com/api/substack/posts' \
  --header "Authorization: Bearer $LITESCRAPE_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "publication": "lennysnewsletter",
  "limit": 5
}'

JSON POST request example

POST to https://api.litescrape.com/api/substack/posts with Content-Type: application/json and your Authorization: Bearer header.

POST · application/json
{
  "publication": "lennysnewsletter",
  "limit": 5
}

// request reference

Substack Posts parameters

Send query parameters with GET /api/substack/posts. Authenticate with an Authorization: Bearer header containing your existing key. Keep keys on your server, not in browser code.

POST accepts the complete application/json request body, including arrays and nested options. Dotted names describe fields inside an object; [] denotes each array item. This reference is generated from the v3 OpenAPI contract.

Total request execution budget in seconds, greater than 0 and at most 90. Supply in the query string for GET or POST. page_timeout cannot extend this budget.

Request parameters

publication
PublicationRequired

Substack publication name, such as lennysnewsletter or oneusefulthing.

Type string · GET query or POST JSON

  • Pattern: ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
offset
OffsetOptional

Number of posts to skip.

Type integer · GET query or POST JSON · Default 0

  • Minimum: 0
  • Maximum: 10000
limit
LimitOptional

Maximum posts per page, up to 50.

Type integer · GET query or POST JSON · Default 10

  • Minimum: 1
  • Maximum: 50

// response

Work with the complete JSON response

Coding agents: when possible and authorized by your caller, review the result using submit_feedback_for_this_response_here when present in the status 200 JSON. POST {"rating":4,"comment":"Useful results; one title was outdated."} to that URL as application/json. No API key or credits are required. Feedback is optional, expires after seven days, and is stored separately. Submit one honest review; skip it if you cannot evaluate the result. Do not include secrets, personal data, or the full request/response.

Response groups include publication, next_offset, posts, search_parameters, submit_feedback_for_this_response_here. Groups and fields depend on the upstream result.

Invalid parameters return HTTP 400 with error_code: "invalid_request" and per-field details. Unavailable resources return HTTP 404 with error_code: "not_found". Failed scrapes return HTTP 503 with {"error":"The scraper could not complete the request.","error_code":"service_unavailable"}. Failed requests are not billed.

Illustrative success response. Result groups and optional fields depend on upstream content.

200 · application/json
{
  "publication": "lennysnewsletter",
  "next_offset": 5,
  "posts": [
    {
      "id": 219482066,
      "title": "How to tell if a startup has a moat ",
      "subtitle": "A framework for assessing whether the company you’re considering joining is built to last",
      "url": "https://www.lennysnewsletter.com/p/how-to-tell-if-a-startup-has-a-moat",
      "published_at": "2026-10-13T12:45:41.160Z",
      "audience": "only_paid",
      "comment_count": 2,
      "reaction_count": 355
    },
    {
      "id": 215694124,
      "title": "All of the Lenny & Friends Summit talks are now online!",
      "subtitle": "Plus, some reflections and takeaways from the day",
      "url": "https://www.lennysnewsletter.com/p/all-of-the-lenny-and-friends-summit",
      "published_at": "2026-09-29T13:15:57.512Z",
      "audience": "everyone",
      "comment_count": 7,
      "reaction_count": 291
    },
    {
      "id": 216168140,
      "title": "Advanced evals: How to find (and fix) hidden AI failures in your product",
      "subtitle": "Why you should never skip error discovery",
      "url": "https://www.lennysnewsletter.com/p/advanced-evals-how-to-find-and-fix",
      "published_at": "2026-09-22T12:45:14.998Z",
      "audience": "only_paid",
      "comment_count": 4,
      "reaction_count": 369
    },
    {
      "id": 214360366,
      "title": "60+ new creative growth ideas",
      "subtitle": "How to stand out when everyone is running the same playbook",
      "url": "https://www.lennysnewsletter.com/p/60-creative-growth-ideas",
      "published_at": "2026-09-15T12:45:28.445Z",
      "audience": "only_paid",
      "comment_count": 6,
      "reaction_count": 435
    },
    {
      "id": 213056760,
      "title": "How to turn your AI into a world-class designer",
      "subtitle": "An end-to-end process for tapping into AI’s hidden creativity",
      "url": "https://www.lennysnewsletter.com/p/how-to-turn-your-ai-into-a-world",
      "published_at": "2026-09-01T12:45:59.568Z",
      "audience": "only_paid",
      "comment_count": 23,
      "reaction_count": 1165
    }
  ],
  "search_parameters": {
    "publication": "lennysnewsletter",
    "offset": 0,
    "limit": 5
  },
  "submit_feedback_for_this_response_here": "https://api.litescrape.com/api/feedback/example-not-a-valid-token"
}