# Doctolib Scraper (`rigelbytes/doctolib-scraper`) Actor

Scrape doctor profiles, availability, and practice details from Doctolib.de — Germany's largest medical appointment platform. Search by specialty, location, insurance type, and languages spoken.

- **URL**: https://apify.com/rigelbytes/doctolib-scraper.md
- **Developed by:** [Rigel Bytes](https://apify.com/rigelbytes) (community)
- **Categories:** Lead generation, Integrations, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 doctor scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Doctolib Doctor Scraper

Extract doctor profiles, practice details, availability, and contact information from Doctolib.de — Germany's largest medical appointment platform — for just **$1.50** per 1,000 doctors. Search by medical specialty, city, insurance type, and spoken languages to build targeted healthcare databases for market research, lead generation, or patient referrals.

### What can Doctolib Doctor Scraper do for you?

- **Build targeted doctor databases** — extract thousands of healthcare professionals filtered by specialty, city, insurance type (public/private), and languages spoken.
- **Find doctors who speak your language** — filter by 13+ languages including English, Arabic, Russian, Turkish, Ukrainian, and more.
- **Discover doctors accepting new patients** — identify practices with open appointment slots and online booking availability.
- **Get detailed practice intelligence** — optionally fetch full profiles including bios, skills, phone numbers, websites, addresses, and weekly opening hours.
- **Schedule smarter** — find doctors with immediate availability (today, within 3, 7, or 14 days) for urgent care needs.
- **Run via API or Console** — automate data extraction with Apify's scheduling, webhook integrations, and REST API.

### What data can you extract?

| Field | Description |
|-------|-------------|
| 👤 **name** | Doctor or practice name with title (e.g. "Dr. med. Nina Haase") |
| 🩺 **speciality** | Medical specialty (e.g. Orthopädie, Augenheilkunde, Allgemeinmedizin) |
| 🏥 **type** | Individual practitioner, organization, or clinic |
| 📍 **address** | Street address, ZIP code, city, full formatted address |
| 🗺️ **latitude / longitude** | GPS coordinates for mapping and geo-analysis |
| 🌐 **url** | Direct link to the Doctolib profile |
| 🏷️ **insuranceSector** | Public, Private, or both |
| 🗣️ **languages** | Languages spoken (human-readable: German, English, Russian...) |
| ✅ **acceptsNewPatients** | Whether the doctor is accepting new patients |
| 📅 **hasOnlineBooking** | Whether online appointment booking is available |
| 📞 **phone** | Practice landline number (detail mode) |
| 🌐 **website** | Practice website URL (detail mode) |
| 📝 **bio** | Full doctor biography and introduction (detail mode) |
| 🕐 **openingHours** | Weekly opening/closing hours (detail mode) |
| 🔧 **skills** | Treatments, procedures, and subspecialties (detail mode) |
| 🖼️ **pictures** | Practice and doctor photo URLs (detail mode) |

### Why use this scraper?

- 🔬 **Market research** — map the healthcare landscape across German cities by specialty density, insurance acceptance, and language coverage.
- 📊 **Competitive intelligence** — monitor which practices offer online booking, which specialties are growing, and pricing patterns.
- 🤝 **Lead generation** — build contact lists of doctors and clinics for medical equipment suppliers, pharmaceutical reps, or service providers.
- 🇩🇪 **Expat & international patient services** — find doctors who speak specific languages in any German city.
- ⚕️ **Healthcare access analysis** — track appointment availability, new patient acceptance rates, and insurance coverage patterns.

### Pricing

- **$1.50/1,000 doctors**
- No hidden fees or limits on usage.

Try the actor with a free Apify account — $5 of free usage credits are included every month on the Apify platform.

### How to use Doctolib Doctor Scraper

1. **Create a free Apify account** at [console.apify.com](https://console.apify.com)
2. **Open Doctolib Doctor Scraper** in the Apify Store
3. **Enter your search criteria** — medical specialties, city, insurance type, and optional language/availability filters
4. **Toggle "Get Detailed Doctor Info"** if you want full profiles with bios, phone numbers, and opening hours
5. **Click Start** and let the actor scrape
6. **Download results** in JSON, CSV, Excel, or HTML format

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchQueries` | string[] | No¹ | Medical specialty slugs to search for (e.g. `augenheilkunde`, `orthopadie`, `hautarzt`) |
| `searchUrls` | object[] | No¹ | Full Doctolib search URLs — overrides `searchQueries` + `location` |
| `location` | string | No | City or region to search in (e.g. Berlin, München, Hamburg) |
| `insuranceSector` | enum | No | Filter by insurance: `all`, `public`, `private` |
| `languages` | string[] | No | Filter by spoken languages: `de`, `gb`, `ar`, `cn`, `es`, `fr`, `it`, `jp`, `pl`, `ro`, `ru`, `tr`, `ua` |
| `availabilitiesBefore` | integer | No | Show only doctors with availability within N days (0 = any time) |
| `getDetailedInfo` | boolean | No | Fetch full profile details (bio, phone, website, opening hours) — slower but richer data |
| `maxItems` | integer | No | Maximum doctors to scrape (0 = unlimited) |
| `proxyConfiguration` | object | No | Proxy settings for anti-bot protection |

¹ At least one of `searchQueries` + `location` or `searchUrls` must be provided.

#### 📝 Copy for Use:

```json
{
    "searchQueries": [
        "augenheilkunde",
        "orthopadie"
    ],
    "location": "Berlin",
    "insuranceSector": "all",
    "languages": ["gb", "ru"],
    "availabilitiesBefore": 0,
    "getDetailedInfo": true,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
````

### Output Example

```json
{
    "name": "Augenarztpraxis Dr. Rajab",
    "title": null,
    "speciality": "Augenarzt",
    "city": "Ilmenau",
    "address": "Ziolkowskistraße 22",
    "fullAddress": "Ziolkowskistraße 22, 98693 Ilmenau",
    "latitude": 50.6957907,
    "longitude": 10.9193559,
    "url": "https://www.doctolib.de/praxis/ilmenau/augenarztpraxis-dr-rajab?pid=practice-288933",
    "insuranceSector": "",
    "languages": ["German"],
    "acceptsNewPatients": true,
    "hasOnlineBooking": true,
    "bio": "Liebe Patientin, lieber Patient, wir freuen uns, Sie in unserer Praxis in Ilmenau und Gotha begrüßen zu dürfen.",
    "website": "https://www.augenzentrum-ocuraj.de/",
    "places": [
        {
            "placeId": "practice-288933",
            "address": "Ziolkowskistraße 22",
            "zipcode": "98693",
            "city": "Ilmenau",
            "phone": null,
            "latitude": 50.6957907,
            "longitude": 10.9193559
        }
    ],
    "openingHours": [
        "Monday: 08:00-13:00",
        "Monday: 14:00-17:00",
        "Tuesday: 08:00-13:00",
        "Wednesday: 08:00-13:00",
        "Thursday: 14:00-17:00",
        "Friday: 08:00-13:00"
    ]
}
```

### Why Choose This Scraper?

- **Affordable**: Pay only $1.50 per 1,000 doctors scraped. No surprise costs.
- **Comprehensive**: Extracts everything from basic search results to full profiles with bios, skills, photos, phone numbers, and opening hours.
- **Easy to Use**: Just pick a specialty and city — the actor handles pagination, deduplication, and API rate limits automatically.
- **Reliable**: Built with tenacity retries and fail-soft design. One failed profile never stops the entire run.

### Recommended Proxy Providers

- ## **Shifter**
  - Reliable residential proxies all over the world.
  - Cheap rates
  - [Order Shifter Now](https://shifter.io/r/YoBB/order)
  - Get 10% Off any product, use coupon `rigelbytes-YoBB`.

- ## **OxyLabs**
  - **100M+ Proxies**
  - Fastest proxies in the market
  - Real profile, human-like Residential IPs
  - Quality assurance framework for most reliable IPs
  - [Get Proxies](https://oxylabs.go2cloud.org/aff_c?offer_id=7\&aff_id=1366\&url_id=7)

- ## **DataImpulse**
  - Covers **200+ Counties**
  - Reliable Residential Proxies for just $1/GB
  - [Get Residential Proxies](https://dataimpulse.com/?aff=89421)

### [![Learn More About Proxies](https://img.shields.io/badge/Learn_More-About_Proxies-blue?style=for-the-badge)](#understanding-proxies)

### 🙌 Why Buy Through Our Affiliate Link?

- Exclusive Deals: Some providers may offer special discounts or bonuses when you use our link.
- Support Our Work: Each purchase helps us maintain and improve the tools and services we provide.
- No Extra Cost: You pay the same price, but part of it goes to supporting our efforts.

#### Running via Apify Console

You can run this actor from the Apify Console by providing the necessary input parameters.

#### Running via API

You can trigger this actor using the Apify API, passing the required input in the request body.

```python
import httpx

async def main():
    client = httpx.AsyncClient(token="YOUR_APIFY_TOKEN")
    run = await client.post(
        "https://api.apify.com/v2/acts/rigelbytes~doctolib-scraper/runs",
        json={
            "searchQueries": ["augenheilkunde", "orthopadie"],
            "location": "Berlin",
            "insuranceSector": "all",
            "languages": [],
            "availabilitiesBefore": 0,
            "getDetailedInfo": false,
            "maxItems": 20
        }
    )
    print(run.json())
```

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('rigelbytes/doctolib-scraper').call({
    searchQueries: ['augenheilkunde', 'orthopadie'],
    location: 'Berlin',
    insuranceSector: 'all',
    languages: [],
    availabilitiesBefore: 0,
    getDetailedInfo: false,
    maxItems: 20
});
```

```shell
curl "https://api.apify.com/v2/acts/rigelbytes~doctolib-scraper/runs" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["augenheilkunde","orthopadie"],"location":"Berlin","maxItems":20}'
```

### 🚀 Other Tools by Rigel Bytes

Explore **81** more scraping tools by Rigel Bytes, organized by use case:

#### 📱 Social Media

Scrape Instagram, TikTok, LinkedIn, and more for content research and marketing intelligence.

- **[Export Instagram Reels](https://apify.com/rigelbytes/export-instagram-reels)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Facebook Ads Scraper](https://apify.com/rigelbytes/facebook-ads-scraper)** — Extract posts, profiles, and engagement data from Facebook for content research, influencer tracking, and marketing analytics.
- **[Instagram Analytics Tool](https://apify.com/rigelbytes/instagram-analytics-tool)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Comment Scraper](https://apify.com/rigelbytes/instagram-comment-scraper)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Creator Stats](https://apify.com/rigelbytes/instagram-creator-stats)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Engagement Tool](https://apify.com/rigelbytes/instagram-engagement-tool)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Post Scraper](https://apify.com/rigelbytes/instagram-post-scraper)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[instagram-posts](https://apify.com/rigelbytes/instagram-posts)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Profile Scraper](https://apify.com/rigelbytes/instagram-profile-scraper)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Instagram Reel Scraper](https://apify.com/rigelbytes/instagram-reel-scraper)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[linkedin-company-details](https://apify.com/rigelbytes/linkedin-company-details)** — Extract posts, profiles, and engagement data from LinkedIn for content research, influencer tracking, and marketing analytics.
- **[Linkedin Company Scraper](https://apify.com/rigelbytes/linkedin-company-scraper)** — Extract posts, profiles, and engagement data from LinkedIn for content research, influencer tracking, and marketing analytics.
- **[LinkedIn Job Scraper](https://apify.com/rigelbytes/linkedin-job-scraper)** — Extract posts, profiles, and engagement data from LinkedIn for content research, influencer tracking, and marketing analytics.
- **[LinkedIn Profile Scraper](https://apify.com/rigelbytes/linkedin-profile-scraper)** — Extract posts, profiles, and engagement data from LinkedIn for content research, influencer tracking, and marketing analytics.
- **[Scrape Instagram Creators](https://apify.com/rigelbytes/scrape-instagram-creators)** — Extract posts, profiles, and engagement data from Instagram for content research, influencer tracking, and marketing analytics.
- **[Tiktok Comment Scraper](https://apify.com/rigelbytes/tiktok-comment-scraper)** — Extract posts, profiles, and engagement data from TikTok for content research, influencer tracking, and marketing analytics.
- **[Tiktok Creator Stats](https://apify.com/rigelbytes/tiktok-creator-stats)** — Extract posts, profiles, and engagement data from TikTok for content research, influencer tracking, and marketing analytics.
- **[Tiktok Engagement Rate](https://apify.com/rigelbytes/tiktok-engagement-rate)** — Extract posts, profiles, and engagement data from TikTok for content research, influencer tracking, and marketing analytics.
- **[TikTok Profile Scraper](https://apify.com/rigelbytes/tiktok-profile-scraper)** — Extract posts, profiles, and engagement data from TikTok for content research, influencer tracking, and marketing analytics.

#### 🏠 Real Estate

Extract property listings, prices, and agent data from top real estate platforms.

- **[Airbnb Address Finder](https://apify.com/rigelbytes/airbnb-address-finder)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Availability Calendar](https://apify.com/rigelbytes/airbnb-availability-calendar)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Detailed Scraper - Search & Listing Details](https://apify.com/rigelbytes/airbnb-detailed-scraper)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Images Downloader](https://apify.com/rigelbytes/airbnb-images-downloader)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Listing](https://apify.com/rigelbytes/airbnb-listing)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Listing Urls](https://apify.com/rigelbytes/airbnb-listing-urls)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Property Details](https://apify.com/rigelbytes/airbnb-property-details)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Reviews](https://apify.com/rigelbytes/airbnb-reviews)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Airbnb Scraper - Search & Listing Details](https://apify.com/rigelbytes/airbnb-scraper)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Bayut Scraper](https://apify.com/rigelbytes/bayut-scraper)** — Scrape property listings and market data from Bayut for market research, price monitoring, and investment analysis.
- **[Boligsiden.dk Scraper](https://apify.com/rigelbytes/boligsiden-dk-scraper)** — Scrape Danish real estate listings from Boligsiden.dk — for sale, sold, and rental properties with pricing, details, and floor plans.
- **[Daft.ie Property Scraper](https://apify.com/rigelbytes/daft-ie-scraper)** — Scrapes property listings from Daft.ie including residential, rental, commercial, and new homes across Ireland.
- **[dubai-listing-scraper](https://apify.com/rigelbytes/dubai-listing-scraper)** — Extract unlimited property listings from Bayut.com — the UAE's largest real estate platform. Get detailed property information and market data.
- **[Export Airbnb Calendar](https://apify.com/rigelbytes/export-airbnb-calendar)** — Scrape property listings and market data from Airbnb for market research, price monitoring, and investment analysis.
- **[Funda Netherlands Real Estate Scraper](https://apify.com/rigelbytes/funda-nl-scraper)** — Scrape property listings from Funda.nl — the largest real estate platform in the Netherlands. Supports buy and rent, with detailed property data.
- **[Furnished Finder Fast](https://apify.com/rigelbytes/furnished-finder-fast)** — Scrape property listings and market data from Furnished Finder for market research, price monitoring, and investment analysis.
- **[Extract Furnished Finder Hosts](https://apify.com/rigelbytes/furnished-finder-hosts)** — Scrape property listings and market data from Furnished Finder for market research, price monitoring, and investment analysis.
- **[FurnishedFinder](https://apify.com/rigelbytes/furnishedfinder)** — Scrape property listings and market data from Furnished Finder for market research, price monitoring, and investment analysis.
- **[Hemnet.se Scraper - Swedish Real Estate Listings](https://apify.com/rigelbytes/hemnet-se-scraper)** — Scrape property listings from Hemnet.se including for-sale, upcoming, and sold homes. Search by URL or location with full property details.
- **[Immobiliare Italy Real Estate Scraper](https://apify.com/rigelbytes/immobiliare-it-scraper)** — Scrape property listings and market data from real estate portals for market research, price monitoring, and investment analysis.
- **[Immobilienscout24](https://apify.com/rigelbytes/immobilienscout24)** — Scrape property listings and market data from real estate portals for market research, price monitoring, and investment analysis.
- **[Immobilienscout24-scraper](https://apify.com/rigelbytes/immobilienscout24-scraper)** — Scrape property listings and market data from real estate portals for market research, price monitoring, and investment analysis.
- **[Immoweb Scraper - Belgium Property Listings](https://apify.com/rigelbytes/immoweb-scraper)** — Scrapes property listings from Immoweb.be. Supports search result extraction with optional property detail enrichment.
- **[Immowelt Property Scraper](https://apify.com/rigelbytes/immowelt-property-scraper)** — The Immowelt Scraper helps you extract unlimited real estate listings from Immowelt with complete details including prices, addresses, and property features.
- **[Immowelt Scraper](https://apify.com/rigelbytes/immowelt-scraper)** — The Immowelt Scraper helps you extract unlimited real estate listings from Immowelt with complete details including prices, addresses, and property features.
- **[Land.com Agents Scraper](https://apify.com/rigelbytes/landdotcom-agents)** — Scrape property listings and market data from Land.com for market research, price monitoring, and investment analysis.
- **[Land.com Scraper](https://apify.com/rigelbytes/landdotcom-scraper)** — Scrape property listings and market data from Land.com for market research, price monitoring, and investment analysis.
- **[Outdoorsy Scraper](https://apify.com/rigelbytes/outdoorsy-scraper)** — Scrape property listings and market data from Outdoorsy for market research, price monitoring, and investment analysis.
- **[Propertyfinder Scraper](https://apify.com/rigelbytes/propertyfinder-scraper)** — Scrape property listings and market data from Property Finder for market research, price monitoring, and investment analysis.
- **[Redfin Scraper](https://apify.com/rigelbytes/redfin-scraper)** — Scrape property listings and market data from Redfin for market research, price monitoring, and investment analysis.
- **[Rightmove Scraper](https://apify.com/rigelbytes/rightmove-scraper)** — Scrape property listings and market data from Rightmove for market research, price monitoring, and investment analysis.
- **[RVshare Scraper](https://apify.com/rigelbytes/rvshare-scraper)** — Scrape property listings and market data from RVshare for market research, price monitoring, and investment analysis.
- **[Unlimited Redfin Scraper](https://apify.com/rigelbytes/unlimited-redfin-scraper)** — Scrape property listings and market data from Redfin for market research, price monitoring, and investment analysis.
- **[Zillow Detail Scraper](https://apify.com/rigelbytes/zillow-detail-scraper)** — Scrape property listings and market data from Zillow for market research, price monitoring, and investment analysis.
- **[Zillow Scraper](https://apify.com/rigelbytes/zillow-scraper)** — Scrape property listings and market data from Zillow for market research, price monitoring, and investment analysis.
- **[Zoopla Scraper](https://apify.com/rigelbytes/zoopla-scraper)** — Scrape property listings and market data from Zoopla for market research, price monitoring, and investment analysis.

#### ✈️ Travel & Hospitality

Monitor rentals, bookings, and travel listings at scale.

- **[Autotrader Scraper](https://apify.com/rigelbytes/autotrader-scraper)** — Scrapes car listings from Autotrader.com with advanced search filters, pagination, and detailed vehicle data.
- **[CarMax Scraper](https://apify.com/rigelbytes/carmax-scraper)** — Scrapes used car listings from CarMax.com with search URL, zip code filtering, and pagination support.
- **[Cars.com Scraper](https://apify.com/rigelbytes/cars-scraper)** — Scrapes car listings from Cars.com using their GraphQL API. Extracts detailed vehicle data including price, specs, and dealer info.
- **[Cars & Bids Scraper](https://apify.com/rigelbytes/carsandbids-scraper)** — Scrape live, upcoming, and past car auctions from Cars & Bids. Extract vehicle details, bids, photos, comments, and auction results.
- **[Ticketmaster Scraper](https://apify.com/rigelbytes/ticketmaster-scraper)** — Collect rental and travel listings from Ticketmaster for pricing intelligence and availability tracking.

#### 🛒 E-commerce

Scrape products, prices, and marketplace data for competitive research.

- **[Amazon Product Scraper](https://apify.com/rigelbytes/amazon-product-scraper)** — Scrape products, prices, and seller data from Amazon for competitor monitoring, pricing, and product research.
- **[Amazon Search Scraper](https://apify.com/rigelbytes/amazon-scraper)** — Scrape products, prices, and seller data from Amazon for competitor monitoring, pricing, and product research.
- **[AutoScout24 Scraper](https://apify.com/rigelbytes/autoscout24-scraper)** — Scrape car listings from AutoScout24 with full filter support. Extract makes, models, prices, mileage, seller info, and market data.
- **[Daraz](https://apify.com/rigelbytes/daraz)** — Scrape products, prices, and seller data from Daraz for competitor monitoring, pricing, and product research.
- **[Etsy Scraper](https://apify.com/rigelbytes/etsy-scraper)** — Scrape products, prices, and seller data from Etsy for competitor monitoring, pricing, and product research.
- **[Homedepot Scraper](https://apify.com/rigelbytes/homedepot-scraper)** — HomeDepot Products Scraper lets you extract product data from homedepot.com using a collection URL and delivery ZIP.
- **[Otodom Scraper - Polish Real Estate Listings](https://apify.com/rigelbytes/otodom-scraper)** — Scrapes property listings from Otodom.pl, Poland's leading real estate marketplace. Supports filters for transaction type, property type, and location.

#### 💼 Jobs & Recruitment

Collect job listings and company hiring data for market analysis.

- **[ZipRecruiter Job Scraper](https://apify.com/rigelbytes/ziprecruiter-scraper)** — Scrape job listings from ZipRecruiter with search queries, locations, and radius filters. Extracts title, company, location, and job details.

#### 📩 Lead Generation

Find business contacts, leads, and company data for sales and outreach.

- **[Company Service Finder](https://apify.com/rigelbytes/company-service-finder)** — The Company Service Finder uses AI to extract and analyze company services from Google Search & Maps. Get detailed service descriptions and competitive insights.
- **[Doctify Scraper](https://apify.com/rigelbytes/doctify-scraper)** — Doctify Scraper lets you extract doctor and practice data from doctify.com using a search results URL. Collect doctor profiles, reviews, and practice details.
- **[FindLaw Law Firm Scraper - Attorney & Law Firm Data Extraction](https://apify.com/rigelbytes/findlaw-scraper)** — Scrape law firm profiles from FindLaw.com. Extract detailed attorney and firm information including contact details, practice areas, and credentials.
- **[Google Maps Scraper](https://apify.com/rigelbytes/google-maps-scraper)** — Find business leads and contact details from Google Maps for outbound sales, prospecting, and CRM enrichment.
- **[Website Services Finder](https://apify.com/rigelbytes/website-services-finder)** — Automatically extract and analyze company services from any business website using advanced AI. Choose from 5 AI providers for accurate service identification.
- **[Zillow Agents](https://apify.com/rigelbytes/zillow-agents)** — Find business leads and contact details from Zillow for outbound sales, prospecting, and CRM enrichment.
- **[Zillow Agents Phone](https://apify.com/rigelbytes/zillow-agents-phone)** — Find business leads and contact details from Zillow for outbound sales, prospecting, and CRM enrichment.

#### ⭐ Reviews & Ratings

Monitor reviews and reputation data across review platforms.

- **[Airbnb Listing Reviews](https://apify.com/rigelbytes/airbnb-listing-reviews)** — Collect reviews and ratings from Airbnb for reputation monitoring and customer insights.
- **[BBB Scraper](https://apify.com/rigelbytes/bbb-scraper)** — Collect reviews and ratings from BBB for reputation monitoring and customer insights.
- **[Rottentomatoes Reviews Scraper](https://apify.com/rigelbytes/rottentomatoes-reviews-scraper)** — Collect reviews and ratings from Rotten Tomatoes for reputation monitoring and customer insights.
- **[Trustpilot Reviews Scraper](https://apify.com/rigelbytes/trustpilot-reviews)** — Collect reviews and ratings from Trustpilot for reputation monitoring and customer insights.

#### 🍔 Food & Delivery

Extract restaurant, grocery, and delivery platform data.

- **[Instacart Scraper](https://apify.com/rigelbytes/instacart-scraper)** — Scrape menus, stores, and delivery data from Instacart for data-driven research and automation.
- **[Publix Scraper](https://apify.com/rigelbytes/publix-scraper)** — Scrape menus, stores, and delivery data from Publix for data-driven research and automation.

#### 🛠️ Developer Tools

General-purpose scraping and automation tools.

- **[Web Crawler](https://apify.com/rigelbytes/webcrawler)** — This web crawler is designed to provide users with complete flexibility by allowing them to use their own scraping logic with full control over request handling and data extraction.

### Understanding Proxies:

When scraping data or browsing anonymously, proxies are essential. They act as intermediaries, masking your original IP address and allowing you to send requests from another location.

#### Why Use Proxies?

- Avoid IP Blocks: By routing requests through proxies, you prevent the target website from recognizing your IP as a scraper or spammer.
- Access Geo-restricted Content: Proxies let you access content or websites restricted by location.
- Enhance Anonymity: Hide your actual IP, ensuring privacy while scraping or browsing.

#### Types of Proxies

1. Residential Proxies
   - Real IP addresses provided by ISPs to home users.
   - They mimic regular users, making them harder to detect.
   - Best for: Long-term, undetectable scraping, and avoiding blocks.
2. Data Center Proxies
   - IP addresses from servers in data centers.
   - Faster and cheaper than residential proxies but easier to detect and block.
   - Best for: High-speed scraping, but with a higher risk of detection.
3. Mobile Proxies
   - IPs provided by mobile carriers (3G/4G/5G networks).
   - Very difficult to detect, as they appear as regular mobile users.
   - Best for: Mobile-related scraping or avoiding sophisticated blocks.

#### Rotating Proxies vs. Straight Proxies

- Rotating Proxies: Every request you send goes through a different proxy, making it harder for websites to detect patterns.
- Straight Proxies: All requests are sent through the same proxy, making it easier to track your IP.

### About Rigel Bytes

Rigel Bytes specializes in web scraping, automation, and data analytics. We help businesses extract and leverage valuable data for informed decision-making.

### Contact Us

For any issues with the actor or general questions, reach out at <contact@rigelbytes.com> or report the issue at the Issues tab on Apify Console. You can also schedule a call at [cal.com/faizanali/appointments](https://cal.com/faizanali/appointments) for custom solutions or support.

### Detailed Data

<details>
<summary>Click to expand a full doctor record with detail mode enabled</summary>

```json
{
    "profileId": "794468",
    "practiceId": "288933",
    "name": "Augenarztpraxis Dr. Rajab",
    "speciality": "Augenarzt",
    "city": "Ilmenau",
    "fullAddress": "Ziolkowskistraße 22, 98693 Ilmenau",
    "latitude": 50.6957907,
    "longitude": 10.9193559,
    "url": "https://www.doctolib.de/praxis/ilmenau/augenarztpraxis-dr-rajab?pid=practice-288933",
    "languages": ["German"],
    "acceptsNewPatients": true,
    "hasOnlineBooking": true,
    "bio": "Liebe Patientin, lieber Patient, wir freuen uns, Sie in unserer Praxis in Ilmenau und Gotha begrüßen zu dürfen.",
    "website": "https://www.augenzentrum-ocuraj.de/",
    "places": [
        {
            "address": "Ziolkowskistraße 22",
            "zipcode": "98693",
            "city": "Ilmenau",
            "fullAddress": "Ziolkowskistraße 22, 98693 Ilmenau",
            "latitude": 50.6957907,
            "longitude": 10.9193559
        },
        {
            "address": "Liebetraustraße 1",
            "zipcode": "99867",
            "city": "Gotha",
            "fullAddress": "Liebetraustraße 1, 99867 Gotha",
            "latitude": 50.94665579999999,
            "longitude": 10.6961431
        }
    ],
    "openingHours": [
        "Monday: 08:00-13:00",
        "Monday: 14:00-17:00",
        "Tuesday: 08:00-13:00",
        "Wednesday: 08:00-13:00",
        "Thursday: 14:00-17:00",
        "Friday: 08:00-13:00"
    ],
    "faqLanguages": "Deutsch",
    "pictures": [
        "https://res.cloudinary.com/doctolib/image/upload/coiyav98g0v41dwura9u"
    ]
}
```

</details>

# Actor input Schema

## `searchQueries` (type: `array`):

Medical speciality keywords to search for (e.g. augenheilkunde, orthopadie, hautarzt, allgemeinmedizin). Use the slug format from Doctolib.

## `searchUrls` (type: `array`):

Full Doctolib search URLs (e.g. https://www.doctolib.de/search?insuranceSector=public\&keyword=orthopadie\&location=berlin). Overrides searchQueries and location when provided.

## `location` (type: `string`):

City or region to search in (e.g. Berlin, München, Hamburg). Used with searchQueries — ignored when searchUrls is provided.

## `insuranceSector` (type: `string`):

Filter by insurance sector

## `languages` (type: `array`):

Filter doctors by languages they speak. Leave empty for no language filter. Available options: de, gb, ar, cn, es, fr, it, jp, pl, ro, ru, tr, ua.

## `availabilitiesBefore` (type: `integer`):

Show only doctors with appointments available within this many days (0 = any time)

## `getDetailedInfo` (type: `boolean`):

When enabled, fetches full profile details for each doctor including bio, skills, website, phone number, addresses, opening hours, and availability calendar. This requires additional API calls per doctor and is slower.

## `maxItems` (type: `integer`):

Maximum number of doctor records to scrape (0 = unlimited)

## `proxyConfiguration` (type: `object`):

Proxy settings for anti-bot protection

## Actor input object example

```json
{
  "searchQueries": [
    "augenheilkunde",
    "orthopadie",
    "hautarzt"
  ],
  "searchUrls": [],
  "location": "Berlin",
  "insuranceSector": "all",
  "languages": [],
  "availabilitiesBefore": 0,
  "getDetailedInfo": false,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset containing scraped doctor profiles

## `kvsRecords` (type: `string`):

Key-value store records produced by the Actor

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "augenheilkunde",
        "orthopadie",
        "hautarzt"
    ],
    "searchUrls": [],
    "location": "Berlin",
    "languages": [],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rigelbytes/doctolib-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": [
        "augenheilkunde",
        "orthopadie",
        "hautarzt",
    ],
    "searchUrls": [],
    "location": "Berlin",
    "languages": [],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("rigelbytes/doctolib-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "augenheilkunde",
    "orthopadie",
    "hautarzt"
  ],
  "searchUrls": [],
  "location": "Berlin",
  "languages": [],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call rigelbytes/doctolib-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rigelbytes/doctolib-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Doctolib Scraper",
        "description": "Scrape doctor profiles, availability, and practice details from Doctolib.de — Germany's largest medical appointment platform. Search by specialty, location, insurance type, and languages spoken.",
        "version": "1.0",
        "x-build-id": "UJyWMKR4DrSKiLA24"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rigelbytes~doctolib-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rigelbytes-doctolib-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rigelbytes~doctolib-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rigelbytes-doctolib-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rigelbytes~doctolib-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rigelbytes-doctolib-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "Medical speciality keywords to search for (e.g. augenheilkunde, orthopadie, hautarzt, allgemeinmedizin). Use the slug format from Doctolib.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Full Doctolib search URLs (e.g. https://www.doctolib.de/search?insuranceSector=public&keyword=orthopadie&location=berlin). Overrides searchQueries and location when provided.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region to search in (e.g. Berlin, München, Hamburg). Used with searchQueries — ignored when searchUrls is provided.",
                        "default": "Berlin"
                    },
                    "insuranceSector": {
                        "title": "Insurance Type",
                        "enum": [
                            "all",
                            "public",
                            "private"
                        ],
                        "type": "string",
                        "description": "Filter by insurance sector",
                        "default": "all"
                    },
                    "languages": {
                        "title": "Languages Spoken",
                        "type": "array",
                        "description": "Filter doctors by languages they speak. Leave empty for no language filter. Available options: de, gb, ar, cn, es, fr, it, jp, pl, ro, ru, tr, ua.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "availabilitiesBefore": {
                        "title": "Appointment Availability",
                        "minimum": 0,
                        "maximum": 14,
                        "type": "integer",
                        "description": "Show only doctors with appointments available within this many days (0 = any time)",
                        "default": 0
                    },
                    "getDetailedInfo": {
                        "title": "Get Detailed Doctor Info",
                        "type": "boolean",
                        "description": "When enabled, fetches full profile details for each doctor including bio, skills, website, phone number, addresses, opening hours, and availability calendar. This requires additional API calls per doctor and is slower.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of doctor records to scrape (0 = unlimited)",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for anti-bot protection",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
