OrbTop

Submission Grinder Literary Market Scraper

FOR CREATORSEDUCATION

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.