
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape the Indie Hackers products database: Stripe-verified and self-reported monthly revenue with monthly history, founders, taglines, websites, social links and product updates. No login needed.
Export the Indie Hackers products database: monthly revenue (Stripe-verified or self-reported), founders, taglines, websites, social links and the latest product updates. Browse the directory by revenue, category and business model, or paste product links. No login, no API key, and about 20 products in under 10 seconds.
https://www.indiehackers.com/product/ghost), product names (ghost) or directory links with filters.| Field | What it does |
|---|---|
startUrls | Product links or names, and directory links (/products?category=ai&sorting=highest-revenue). Empty = browse the directory. |
maxItems | Products per directory list (per category or directory link). 0 = all the directory shows. Default 20. |
sortBy | verified-revenue (Stripe-verified first, the site's default), highest-revenue, lowest-revenue, recently-updated, recently-added. |
categories | One or more of the 57 directory categories, each browsed as its own list. |
businessModel | free, ads, commission, transactions or subscriptions. |
minRevenue / maxRevenue | Monthly revenue range in USD. |
includeDetails | Open each product page (description, founders, links, posts, updates). On by default. |
fetchRevenueDetails | Also read each revenue page (Stripe history, exact cents, date of the self-reported figure). Off by default: the site builds these pages slowly. |
maxUpdatesPerProduct | Latest updates to include per product (default 10, 0 = none). |
{
"categories": ["ai", "productivity"],
"sortBy": "highest-revenue",
"minRevenue": 1000,
"maxItems": 50
}
| Field | Description |
|---|---|
productId, name, tagline, description | The product and how it describes itself |
url, websiteUrl, avatarUrl | Indie Hackers page, website, logo |
monthlyRevenueUSD | Stripe-verified revenue of the last 30 days, or the self-reported monthly figure |
revenueSource, revenueVerified, revenueIsExact, revenueUpdatedAt, revenueNote | Where the figure comes from, whether it is exact or rounded ($35K), how fresh it is, and why it was left out when it is a joke claim |
verifiedRevenueLast30DaysUSD, selfReportedRevenueUSD, revenueHistory | With Revenue details: both figures and the Stripe revenue per month (month, revenueUSD) |
founders, founderNames | People on the product: username, name, role, profile link and avatar |
postsCount, updates, updatedAt | Number of posts, the latest updates (date, title, link, text, upvotes, comments) and the date of the newest one |
twitterHandle, twitterUrl, facebookUrl | Social links |
claimed, categories, businessModels | Claimed by its creator; the directory category and business model it was found under |
detailsScraped, sourceUrl, scrapedAt | Whether the product page was read, which list or link it came from, when |
Example (from a test run, trimmed; the person is fictional):
{
"productId": "ghost",
"name": "Ghost",
"tagline": "Indie subscription platform for creators",
"url": "https://www.indiehackers.com/product/ghost",
"websiteUrl": "https://ghost.org",
"avatarUrl": "https://storage.googleapis.com/indie-hackers.appspot.com/product-avatars/ghost/200x200_ghost.webp",
"monthlyRevenueUSD": 880997.33,
"revenueSource": "stripe-verified",
"revenueVerified": true,
"revenueIsExact": true,
"verifiedRevenueLast30DaysUSD": 880997.33,
"selfReportedRevenueUSD": 62000,
"revenueHistory": [{"month": "2017-04", "revenueUSD": 71469.26}, {"month": "2017-05", "revenueUSD": 77583.08}],
"postsCount": 5,
"twitterHandle": "ghost",
"facebookUrl": "https://www.facebook.com/ghost",
"founders": [{"username": "janedoe", "name": "Jane Doe", "role": "Creator", "profileUrl": "https://www.indiehackers.com/janedoe"}],
"claimed": true,
"updatedAt": "2022-05-23",
"detailsScraped": true
}
$7.00 per 1,000 products ($0.007 per product saved). You pay only for products saved to the dataset: products that do not exist, links that are not product pages and products outside your revenue filter are free.
Platform usage (compute and datacenter proxy traffic) is billed on top and is small: 1,000-product runs used $0.014 to $0.037 of platform usage in our tests, so 1,000 products ≈ $7.04 and 100 products ≈ $0.70.
Is it legal? The scraper reads public pages that anyone can open without an account. Founder names and handles are personal data: use them in line with privacy laws such as the GDPR and Indie Hackers' terms.
Do I need a login or a proxy? No login. Datacenter proxies are the default and work for this site; if they are refused, the run switches to US residential exits by itself.
How many products can I get? As many as the directory shows to visitors. Revenue-sorted lists are walked range by range, so large exports work: our 10,000-product test runs finished in 33 to 45 minutes. When the directory has nothing more to show, the run ends with a message saying how many products it found.
Why is a revenue field empty? Many founders never report revenue. Self-reported claims above $10M/month or below zero are treated as jokes: monthlyRevenueUSD stays empty and revenueNote says why. Unclaimed product pages show no figures, so the scraper reads their revenue page instead.
Is the revenue verified? Only when revenueSource is stripe-verified. Self-reported figures come straight from the founders and are not checked by anyone.
Can I schedule it or use the API? Yes. Schedule runs to track revenue over time, call it from the API, or connect it to your tools with webhooks and integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalProduct or directory links
Indie Hackers links, one per line: product pages (https://www.indiehackers.com/product/ghost) or product names (ghost), and products directory links with their filters (https://www.indiehackers.com/products?category=ai&sorting=highest-revenue). Leave empty to browse the products directory with the sort order and filters below.
maxItemsintegerOptionaldefault 20Max products per directory list
How many products to save from the directory, per category or directory link. 0 means every product the directory shows. Product links are always all scraped.
sortByenumOptionaldefault "verified-revenue"Sort order
Order of the directory, as on the site. Revenue orders are followed exactly past the site's first page; the date orders are exact for the first page and then add products category by category.
categoriesarrayOptionalCategories
Browse only these categories (each is its own list, up to Max products each). Leave empty for the whole directory.
businessModelenumOptionaldefault ""Business model
Browse only products with this business model.
minRevenueintegerOptionalMin monthly revenue (USD)
Only products with at least this monthly revenue. Filters the directory on the site's side and product links after reading them.
maxRevenueintegerOptionalMax monthly revenue (USD)
Only products with at most this monthly revenue. When sorting by highest revenue without a maximum, self-reported joke figures above $10M/month are left out.
includeDetailsbooleanOptionaldefault trueOpen each product page
Read every product's page for the description, founders, social links, post count, claimed status and updates. Turn off for a fast list of name, tagline, logo and revenue from the directory only.
fetchRevenueDetailsbooleanOptionaldefault falseRevenue details (slower)
Also read each product's revenue page: the exact self-reported figure and the date it was last updated, and for Stripe-verified products the exact last-30-days figure and the month-by-month revenue history. The site builds these pages slowly (often 5 to 15 seconds each), so runs take longer.
maxUpdatesPerProductintegerOptionaldefault 10Updates per product
How many of the product's latest updates (milestones and posts) to include. 0 leaves them out.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work for this site. If the chosen exits are refused, the run switches to US residential exits by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| productId | string | |
| name | string | null | |
| tagline | string | null | |
| description | string | null | |
| url | string | |
| websiteUrl | string | null | |
| avatarUrl | string | null | |
| monthlyRevenueUSD | number | null | |
| revenueSource | string | null | |
| revenueVerified | boolean | null | |
| revenueIsExact | boolean | null | |
| revenueUpdatedAt | string | null | |
| revenueNote | string | null | |
| selfReportedRevenueUSD | number | null | |
| verifiedRevenueLast30DaysUSD | number | null | |
| revenueHistory | array | null | |
| postsCount | number | null | |
| twitterHandle | string | null | |
| twitterUrl | string | null | |
| facebookUrl | string | null | |
| founders | array | null | |
| founderNames | string | null | |
| claimed | boolean | null | |
| categories | array | null | |
| businessModels | array | null | |
| updatedAt | string | null | |
| updates | array | null | |
| detailsScraped | boolean | null | |
| sourceUrl | string | null | |
| scrapedAt | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One Indie Hackers product saved with its revenue, founders and details. | $0.007 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/indiehackers-scraper').call({
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/indiehackers-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/indiehackers-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Full details of four well-known Indie Hackers products: revenue, founders, links and latest updates.
AI products sorted by highest monthly revenue, at least $1,000 a month.
Top Stripe-verified products with the exact last-30-days revenue and the month-by-month revenue history.
A directory link: subscription-based products, most recently updated first.
The 40 highest-revenue products, past the site's 18-product page.
A quick directory-only list of name, tagline, logo and revenue, lowest revenue first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.