QueryTracker Literary Agent Directory 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.
QueryTracker Literary Agent Directory Scraper
Extract literary agent profiles from QueryTracker — the #1 querying-author platform with no Apify competitors. Scrapes agent name, agency, genres, query status (open/closed), query method, social links, agency website, and profile last-updated date from every public /agent/<id> profile page.
QueryTracker's public profile pages expose agent data without a login. Premium-tier fields (per-user query history, full response statistics) are member-gated and are not scraped.
Features
- Enumerates agents by sequential numeric ID across the full QueryTracker namespace (IDs 4901–21852+, ~2,000 active profiles)
- Skips non-existent agent IDs gracefully — no errors, no wasted PPE charges
- Extracts all publicly-visible fields: name, agency, website, genres (fiction and nonfiction sub-genres), query status, query method, Twitter/social links, and last-updated date
- Detects open vs. closed query status from the profile page without any member login
- Configurable start/end ID range so you can scrape a slice or the full directory
- Polite crawl rate (5 concurrent requests)
Who Uses Literary Agent Data?
- Query-CRM builders — import the full agent directory into your tool so authors can track which agents they have queried
- Author-services platforms — match manuscripts to agents by genre and query status
- Literary data resellers and enrichment pipelines — combine with Poets & Writers data for a complete agent intelligence layer
- Academic and market researchers — analyze genre coverage, query method distribution, and open-vs-closed rates across the agent market
- Book startup founders — build genre-specific agent shortlists for recommendation features
How It Works
- The actor generates candidate URLs for each numeric agent ID in your configured range (default 4901–5000 for fast runs; full range 4901–21852 for bulk scrapes).
- Each page is fetched and every profile field comes back in that single pass.
- Pages that return "Agent Not Found" are silently skipped; only real agent profiles produce output records.
- Data is extracted from structured sections: General (website, socials), Query Methods, Genres, and Profile History (last update).
Input
Quick start: 10 agents from the default range
{
"startId": 4901,
"endId": 4950,
"maxItems": 10,
"sp_intended_usage": "Building an agent directory",
"sp_improvement_suggestions": ""
}
Full directory crawl
{
"startId": 4901,
"endId": 21852,
"maxItems": 0,
"sp_intended_usage": "Full directory export",
"sp_improvement_suggestions": ""
}
Single agent by ID
{
"startId": 4901,
"endId": 4901,
"maxItems": 1,
"sp_intended_usage": "Spot check",
"sp_improvement_suggestions": ""
}
Input Parameters
| Field | Type | Default | Description |
|---|---|---|---|
| startId | integer | 4901 | First agent ID to try in the enumeration range |
| endId | integer | 5000 | Last agent ID to try. Set to 21852 for the full known namespace |
| maxItems | integer | — | Maximum number of agent profiles to return. Set to 0 for no limit |
Output
Each record represents one public agent profile on QueryTracker:
{
"agent_id": "4901",
"agent_name": "Ms. Alice Speilburg",
"agency": "Speilburg Literary Agency",
"agency_website": "http://speilburgliterary.com",
"genres": "Action/Adventure, Crime/Police, Fantasy, Historical, Horror, Mystery, Science Fiction, Thrillers/Suspense",
"is_accepting_queries": false,
"query_method": "QueryManager",
"response_stats_summary": "",
"bio": "",
"profile_url": "https://querytracker.net/agent/4901",
"social_links": "https://twitter.com/alicespeilburg",
"last_updated": "05/16/2026 - Closed to queries."
}
Output Fields
| Field | Type | Notes |
|---|---|---|
| agent_id | string | QueryTracker numeric agent ID |
| agent_name | string | Agent full name with honorific (e.g. "Ms. Alice Speilburg") |
| agency | string | Literary agency name |
| agency_website | string | Agency website URL from the General section |
| genres | string | Comma-separated fiction/nonfiction genre list |
| is_accepting_queries | boolean | true if open to unsolicited queries, false if closed |
| query_method | string | How the agent accepts queries: QueryManager, email, form, postal mail, etc. |
| response_stats_summary | string | Aggregate response stats (empty on public profiles — member-gated) |
| bio | string | Agent bio (empty on public profiles — member-gated) |
| profile_url | string | Canonical QueryTracker profile URL |
| social_links | string | Comma-separated social media URLs (Twitter/X, Instagram, etc.) |
| last_updated | string | Most recent profile update date and change summary |
Note on member-gated fields: QueryTracker shows response statistics (average response days, reply rate) and agent bios only to logged-in members. The response_stats_summary and bio fields are intentionally empty — only public data is scraped per QueryTracker's access model.
ID Range Guide
QueryTracker uses a sparse numeric namespace. Not all IDs in a range correspond to active agents — the actor skips "Agent Not Found" pages automatically. Typical yield:
| Range | Approx. active agents |
|---|---|
| 4901–5000 | ~5–10 |
| 4901–10000 | ~200–400 |
| 4901–21852 | ~1,800–2,200 (full directory) |
For a full directory export, set endId: 21852 and maxItems: 0.
Legal Note
QueryTracker's public /agent/<id> profile pages are freely accessible without authentication. This actor scrapes only the information visible to any anonymous visitor. Premium-tier fields are not scraped. Always review QueryTracker's terms of service before using scraped data commercially.