Submission Grinder Literary Market Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
Submission Grinder Literary Market Scraper
Scrape The Submission Grinder — the leading free literary market database for fiction, poetry, and nonfiction writers. Extracts market name, genres, pay rate, response-time averages, acceptance rates, and submission guidelines for 6,000+ markets.
The Submission Grinder is the primary free alternative to Duotrope. Its community-sourced response-time and acceptance-rate statistics are not available from any other free source. Market list browsing is login-gated, but individual market detail pages (/Market/Index/<id>) are fully public — this scraper enumerates them by ID to collect the complete database.
What you get
| Field | Description |
|---|---|
market_id |
Numeric market ID |
market_name |
Publication or market name |
market_type |
fiction / poetry / nonfiction |
genres |
Genres accepted (Fantasy, Science Fiction, Literary, etc.) |
pay_rate |
Pay per word or per piece (e.g., "14 cents/word", "$69.50/piece") |
response_time_avg_days |
Community-reported average response time in days |
acceptance_rate |
Acceptance percentage with average days (e.g., "1.49% - avg 33 days") |
submission_url |
URL to the market's submission guidelines page |
guidelines_summary |
First 500 characters of the market's self-provided description |
simultaneous_submissions |
Whether simultaneous submissions are allowed |
reprints_accepted |
Whether reprints are accepted (when listed) |
status |
open / temporarily_closed / closed / disqualified |
source_url |
Source URL on The Submission Grinder |
Use cases
- Build a searchable literary market database
- Filter markets by genre, pay tier, or acceptance rate
- Track response time trends across fiction magazines
- Power submission-tracking tools for writers
- Research SFWA-qualifying or pro-rate markets
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
startId |
integer | 1 | First market ID to crawl (inclusive) |
endId |
integer | 25000 | Last market ID to crawl (inclusive) |
maxItems |
integer | — | Cap the total number of records scraped |
Markets with IDs outside the active range return empty pages and are silently skipped. To scrape the full database, use startId: 1, endId: 25000, and omit maxItems.
Example output
{
"market_id": 11,
"market_name": "Clarkesworld Magazine",
"market_type": "fiction",
"genres": ["Fantasy", "Science Fiction"],
"pay_rate": "14 cents/word",
"response_time_avg_days": 3.2,
"acceptance_rate": "1.49% - avg 33 days",
"submission_url": "http://clarkesworldmagazine.com/submissions/",
"guidelines_summary": "Note: after receiving a rejection, wait seven days before submitting again. Clarkesworld Magazine is an online science fiction and fantasy magazine...",
"simultaneous_submissions": false,
"reprints_accepted": null,
"status": "open",
"source_url": "https://thegrinder.diabolicalplots.com/Market/Index/11"
}
Pricing
Charged per market record scraped. Uses the standard pay-per-event model — you only pay for data you receive.
Notes
- Market IDs are sequential integers. Some IDs in the range may be unused or point to disqualified markets — these emit a minimal record with
status: "disqualified"or are skipped entirely if the page has no market data. - Response statistics are community-reported and reflect the aggregate of all user-logged submissions over the past 12 months.
- The scraper respects the site's public/private boundary: only the public
Market/Index/<id>pages are crawled. Browse, search, and account pages are never accessed.