Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    HotFrog Scraper: 17 Data Fields, Up to 1,000 Free Results/Month (2026)

    By CrawlerBros Engineering Team

    Each record returned by the HotFrog Scraper carries 17 output fields, including business names, phone numbers, addresses, descriptions, and category information, making it suitable for generating comprehensive business listings. This Actor focuses on extracting US local business data from HotFrog.com, making it ideal for researchers or sales teams targeting specific US markets. It is not for anyone who needs email addresses or granular financial data, which the records do not include.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open HotFrog Scraper on Apify and run the prefilled example.

    How reliable is HotFrog Scraper in production?

    Across the last 30 days of public runs on the Apify platform, HotFrog Scraper recorded 105 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 105 100.0%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 105 100.0%

    No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.

    What does it cost to run HotFrog Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.

    The primary control affecting your bill is "maxItems", which directly limits the number of results written to the dataset. Since result charges apply only to results written, capping "maxItems" is the most direct way to manage costs. To estimate costs, run the Actor with a small "maxItems" value, such as 30, and then review the actual usage in your run logs.

    How do you run HotFrog Scraper from the API?

    The schema marks 1 of its 4 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~hotfrog-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","searchQuery":"plumber","location":"new-york","maxItems":30}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "searchQuery": "plumber",
      "location": "new-york",
      "maxItems": 30
    }
    
    run = client.actor("crawlerbros~hotfrog-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "searchQuery": "plumber",
      "location": "new-york",
      "maxItems": 30
    }
    
    const run = await client.actor('crawlerbros~hotfrog-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which HotFrog Scraper inputs matter, and which can you skip?

    This Actor has four input controls. Most users should focus on "searchQuery" and "location" to define their target businesses and geographic areas. The "mode" field defaults to 'search' and requires no changes, while "maxItems" is essential for managing the scope and cost of each run.

    • mode (string): What data to fetch. Default: "search".
    • searchQuery (string): Business type or keyword, e.g. plumber, pizza restaurant, dentist. Default: "plumber".
    • location (string): City or state as URL slug, e.g. new-york, los-angeles, texas, chicago. Default: "new-york".
    • maxItems (integer): Hard cap on emitted records. Default: 30.

    Fixed-choice controls: mode accepts search (Search businesses by keyword and location).

    What does HotFrog Scraper return?

    The returned records are suitable for building comprehensive business directories and generating sales leads, providing business names, phone numbers, addresses, and website URLs. However, they conspicuously do not contain email addresses or detailed financial information, which means they are not suitable for direct email marketing campaigns or in-depth financial analysis.

    • businessName: String - Business display name
    • businessId: String - HotFrog internal business ID
    • phone: String - Business phone number
    • address: String - Street address
    • city: String - City name
    • state: String - 2-letter state code (e.g., NY)
    • description: String - Business description (up to 500 characters)
    • website: String - Business website URL
    • category: String - Business category derived from profile URL
    • profileUrl: String - Full HotFrog profile URL
    • logoUrl: String - Business logo URL (when available)
    • verified: Boolean - Whether the listing is verified
    • searchQuery: String - Search term used
    • searchLocation: String - Location searched
    • recordType: String - Always business
    • scrapedAt: String - ISO 8601 timestamp
    • sourceUrl: String - Source search results page URL

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open HotFrog Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Start by setting the "mode" to "search"; this is the default and only option.
    2. Input a specific business type or keyword into the "searchQuery" field, such as "dentist".
    3. Define a clear "location" using a city or state slug, for example, "los-angeles" or "new-york".
    4. For your initial test, keep "maxItems" low, perhaps at its default of 30, to ensure the output format is what you expect.
    5. Run the Actor and then inspect the dataset to verify that the businessName, profileUrl, and category fields are present and well-formed for the initial results.
    6. Check for phone and website fields, as not all listings include them. Understand this before scaling up.

    How do you apply it? Three worked playbooks

    These are HotFrog Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Local business lead generation

    Outcome: Local business lead generation

    Configure: Set "searchQuery" to a specific service like "HVAC repair" and "location" to a target city like "chicago". Keep "maxItems" to a reasonable limit, such as 200, for manageable batches.

    Working method: Begin by running the Actor for a single city and a focused search query. Review the output for completeness of phone numbers and websites. Once satisfied, expand to additional cities or refine the search query to cover related services. You might integrate these leads into a CRM or use them for direct outreach campaigns.

    Deliverable: A CSV file or database table containing business names, addresses, phone numbers, and website URLs for potential leads within a specified geographic area and business category.

    Stop condition: An unusual proportion of records lack phone or website fields, or the category field frequently contains irrelevant entries for the given searchQuery.

    Use case 2: Business contact database building

    Outcome: Business contact database building

    Configure: For comprehensive coverage, set "searchQuery" to broad categories like "restaurant" or "lawyer" and iterate through multiple "location" slugs. Adjust "maxItems" to 500 to capture as many listings as possible per run.

    Working method: Start with a single broad category and location. Collect the initial set of data and then run the Actor for another location, combining the datasets. Expand the process to cover all relevant categories and locations needed for your database, ensuring data deduplication if running multiple overlapping searches. Focus on the profileUrl to track unique entries.

    Deliverable: A deduplicated and normalized database of business contacts, including names, addresses, phone numbers, and websites, categorized by business type and location.

    Stop condition: Duplicate profileUrl entries appear frequently across different runs, or address fields are consistently missing or malformed for a significant portion of results.

    Use case 3: Market research and competitor analysis

    Outcome: Market research and competitor analysis

    Configure: Define a "searchQuery" relevant to your market, such as "pizza restaurant", and specify a "location" of interest, like "san-francisco". Set "maxItems" to a number that captures all relevant competitors, potentially up to 500.

    Working method: Execute a run for your core business type and primary location. Analyze the businessName, description, website, and category fields to identify key competitors and their offerings. Repeat this process for adjacent keywords or locations to broaden your market view. Look for patterns in description or category to understand market segmentation.

    Deliverable: A structured report or spreadsheet detailing competitor business names, descriptions, websites, and categories within a specified market segment, providing insights into market landscape and competitive strategies.

    Stop condition: The description fields for a significant number of records are empty or generic, making it difficult to assess competitive offerings, or the category field is too broad to be useful.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    The "maxItems" control has a hard cap of 500 items per run. When approaching this limit, consider refining your searchQuery or location to target narrower sets of results. For instance, if searching for "dentist" in "new-york" yields too many results, you could specify a more granular location like "brooklyn-ny" or refine the query to "pediatric dentist".

    When should you not use HotFrog Scraper?

    This HotFrog Scraper is best suited for US local business directories. If your data needs extend beyond the United States, consider alternative Actors. For instance, if you need data for India, the Hotfrog India Scraper would be a more appropriate choice. For broader international coverage across multiple countries like the US, UK, Canada, and Australia, the Fyple Scraper - Local Business Directory provides a wider scope. If you require business information specifically from Switzerland, the local.ch Scraper - Swiss Business Directory would offer more precise data. Similarly, for businesses in Portugal, the PaiPt Scraper - Portugal Business Directory (Paginas Amarelas) is specialized for that region. Using this Actor for regions outside the US will yield no results and consume platform usage unnecessarily. Furthermore, if you require verified email addresses or comprehensive contact person details beyond a phone number, this Actor's output will fall short, as it does not provide these fields. In such cases, a specialized email-finding service or a different data enrichment Actor might be necessary.

    What should you check before trusting the output?

    • Check that businessName and profileUrl fields are never null for any record, indicating a complete listing.
    • Verify that the category field contains relevant, descriptive text matching your searchQuery to ensure search accuracy.
    • Monitor phone and website fields for consistent formatting or unexpected empty values, as their presence varies by listing.
    • Ensure description fields are present and contain actual business descriptions, not placeholders or error messages.
    • Confirm that the scrapedAt timestamp is recent, indicating live data retrieval for each run.

    None of this proves a record is correct. It gives a scheduled HotFrog Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What kind of business details does the HotFrog Scraper provide?

    The HotFrog Scraper extracts business names, phone numbers, addresses, cities, states, descriptions, websites, categories, profile URLs, logo URLs (when available), whether the listing is verified, the search query and location used, and timestamps and source URLs for each record. You get 17 output fields for each business listing.

    How reliable is the data collected from HotFrog?

    Telemetry shows that in the last 30 days, 105 out of 105 runs succeeded. The data freshness varies by listing, as businesses maintain their own profiles on HotFrog. The Actor always fetches live data, so the information is as current as what is publicly displayed on the website at the time of scraping.

    Can I get email addresses for businesses using this Actor?

    No, the HotFrog Scraper does not extract email addresses. The output focuses on publicly available business contact information such as phone numbers and website URLs. If your project requires email addresses, you would need to use a different tool or integrate this data with another Actor specialized in email finding or lead enrichment.

    How much does it cost to get 1,000 business listings?

    On Apify's free plan, 1,000 results from the HotFrog Scraper cost $5.00 in result charges. This covers only the result charges; platform usage is billed separately.

    Are there any limits to the number of businesses I can scrape?

    Yes, there is a hard cap of 500 items per run using the "maxItems" control. If you need more than 500 results for a specific search query and location, consider refining your keywords or targeting smaller geographical areas to manage the volume effectively.

    Where to go next

    When you are ready to run it, open HotFrog Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the HotFrog Scraper Actor page for the current input schema, pricing tier, and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-25.

    • Actor last updated by its maintainers on 2026-06-11.

    • Run outcome figures cover the 30 day public window ending 2026-09-25.

    • HotFrog Scraper on Apify

    Featured actors

    HotFrog Scraper

    Scrape HotFrog.com - US local business directory with millions of business listings. Search by keyword and location to get business names, phone numbers, addresses, categories, and descriptions.

    Run on Apify ↗