---
title: "Search the journalists dataset"
method: GET
path: "/datasets/journalists/search"
tags: ["Datasets"]
---

# Search the journalists dataset

`GET /datasets/journalists/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/datasets/journalists/search`
- Auth: API key in header `x-api-key`

Searches the journalists index (dataset id enum value `journalists`) — public journalist and reporter records crawled from news outlets' own staff/author pages, for PR outreach. Each record carries the outlet, title, best-effort beat topics, and any public contact info found on that outlet's own page, plus deterministic record_type, role_type, email_kind, and outreach-readiness quality signals. There is no cross-outlet upstream search; this dataset is built by crawling a curated roster of outlets ourselves. vertical enum: `tech`, `crypto`, `marketing`, `consumer_tech`, `consumer_policy`, `cybersecurity`, `health`, `gaming`, `climate`, `business`, `entertainment`, `sports`, `legal`, `science`, `politics`, `real_estate`, `automotive`, `travel`, `food`, `education`, `design`, `film_tv`, `fashion`, `music`, `personal_finance`, `tech_independent`, `culture_independent`, `local_news`, `construction`, `banking`, `retail`, `aerospace_defense`, `energy`, `agriculture`, `local_business`. contact_type enum: `email`, `social`, `none`. record_type enum: `person`, `desk`, `organization`, `syndicated_byline`, `unknown`. role_type enum: `staff`, `editor`, `reporter`, `contributor`, `freelancer`, `columnist`, `non_editorial`, `unknown`. email_kind enum: `individual_work`, `individual_personal_public`, `shared_desk`, `tips_or_submissions`, `outlet_generic`, `unknown`. sort enum: `relevance`, `name_asc`, `outlet_asc`, `crawled_desc`, `readiness_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).

## Query parameters

- `q` string
- `outlet` string
- `vertical` 'tech' | 'crypto' | 'marketing' | 'consumer_tech' | 'consumer_policy' | 'cybersecurity' | 'health' | 'gaming' | 'climate' | 'business' | 'entertainment' | 'sports' | 'legal' | 'science' | 'politics' | 'real_estate' | 'automotive' | 'travel' | 'food' | 'education' | 'design' | 'film_tv' | 'fashion' | 'music' | 'personal_finance' | 'tech_independent' | 'culture_independent' | 'local_news' | 'construction' | 'banking' | 'retail' | 'aerospace_defense' | 'energy' | 'agriculture' | 'local_business' | 'general_news'
- `topic` string
- `contact_type` 'email' | 'social' | 'none'
- `record_type` 'person' | 'desk' | 'organization' | 'syndicated_byline' | 'unknown'
- `role_type` 'staff' | 'editor' | 'reporter' | 'contributor' | 'freelancer' | 'columnist' | 'non_editorial' | 'unknown'
- `email_kind` 'individual_work' | 'individual_personal_public' | 'shared_desk' | 'tips_or_submissions' | 'outlet_generic' | 'unknown'
- `min_outreach_readiness` integer
- `sort` 'relevance' | 'name_asc' | 'outlet_asc' | 'crawled_desc' | 'readiness_desc'
- `page` integer
- `page_size` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DatasetsJournalistsSearchResponseDoc
  - `code` integer
  - `data` DatasetsJournalistsSearchResponse
    - `dataset` string
    - `items` EsJournalistRecord[]
      - `bio` string
      - `contact_email` string
      - `contact_source_url` string
      - `contact_type` string: email | social | none
      - `crawled_at` string: RFC3339
      - `email_domain` string
      - `email_kind` string
      - `name` string
      - `normalized_name` string
      - `outlet` string
      - `outlet_domain` string
      - `outlet_id` string
      - `outreach_quality_version` integer
      - `outreach_readiness_band` string
      - `outreach_readiness_reasons` string[]
      - `outreach_readiness_score` integer
      - `profile_url` string
      - `record_type` string
      - `role_type` string
      - `slug` string
      - `social_links` object
      - `title` string
      - `topics` string[]
      - `vertical` string
    - `page` integer
    - `page_size` integer
    - `sort` string
    - `total` integer
  - `msg` string

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
