# AstroSage Astrologer Scraper — Prices, Ratings, Reviews & Live (`yugenox/astrosage-astrologer-scraper`) Actor

Scrape India's AstroSage Varta astrologer marketplace: 8,600+ online astrologers or the full 34,000+ directory with per-minute prices and discounts, ratings, followers, marketplace rank, languages, skills, city, bio, chat/call/video availability, live-stream prices and reviews. No login.

- **URL**: https://apify.com/yugenox/astrosage-astrologer-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Categories:** Lead generation, E-commerce, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 astrologers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## AstroSage Astrologer Scraper — Prices, Ratings, Reviews & Live Streams

Scrape **AstroSage Varta**, one of India's largest talk-to-an-astrologer marketplaces. Get every astrologer who is online in the app (about **8,600**) or the **full directory of 34,000+ profiles**, online and offline. Each row has per-minute prices and discounts, ratings, followers, AstroSage's own marketplace rank, skills, languages, city, bio, chat/call/video availability, live-stream prices and client reviews.

No login, no account and no cookies. Works with the default Apify datacenter proxy.

### What you can do with it

- **Price benchmarking**: per-minute rates, list prices and discount depth by skill (Vedic, Tarot, KP, Numerology, Vastu…), language, experience or city, in INR or USD.
- **Market research on astro-tech**: supply size, specialisation mix, how much of the market is online at a given hour, and how many AI personas sit next to human astrologers.
- **Competitor and talent scouting**: find top-ranked, well-reviewed astrologers by niche and language, for your own platform, agency or content.
- **Tracking over time**: schedule runs to follow ratings, followers, prices and rank. Online counts change through the day.
- **Review analysis**: newest client reviews with stars, text, date and whether each is a verified purchase.

### Modes

| Mode | What you get | Size / speed |
|---|---|---|
| **Online astrologers** (default) | Everyone currently listed in the app, with marketplace rank, gender and top consultation topics | ~8,600 · ~20 s without profiles, a few minutes with |
| **Full directory** | Every astrologer profile, online or offline, walked by ID | ~34,000 · ~10–15 min at concurrency 25 |
| **Specific astrologers** | The IDs, profile URLs or slugs you give | seconds |
| **Live now** | Astrologers streaming live, with audio / video / anonymous live-session prices | ~20–90 at a time |
| **AI personas** | AstroSage's AI astrologers (Love Guru, KP Astrologer, …) | ~46 |

### Input

| Field | Meaning |
|---|---|
| `mode` | `roster` (online astrologers), `directory`, `ids`, `live` or `ai` |
| `astrologers` | For `ids`: IDs (`31579`), profile URLs (`https://varta.astrosage.com/astrologer/jyotiastro66`) or slugs. Filling this in switches to `ids` automatically |
| `maxItems` | Max astrologers to save (empty = no limit) |
| `includeProfile` | Add bio, city/state/country, education, focus areas, chat/call/video availability and minimum wallet balance (default on) |
| `includeReviews`, `maxReviewsPerAstrologer` | Attach the newest reviews (default off, 20 each, 0 = all up to 5,000) |
| `currency` | `INR` (prices shown in India) or `USD` (international prices, which AstroSage sets separately) |
| `language` | `en` or `hi` |
| Filters | `skills`, `languages`, `minRating`, `minRatingCount`, `maxPricePerMin`, `gender`, `verifiedOnly`, `onlineOnly`, `excludeAI`. Only matching astrologers are saved |
| `idFrom`, `idTo` | Full directory only: scrape an ID range (e.g. only newer astrologers) |
| `maxConcurrency` | Parallel requests (default 15, max 40) |

#### Examples

Top Tarot readers who speak Hindi, rated 4.8+:

```json
{ "mode": "roster", "skills": ["tarot"], "languages": ["hindi"], "minRating": "4.8", "maxItems": 200 }
```

The whole directory, international prices:

```json
{ "mode": "directory", "currency": "USD", "maxConcurrency": 25 }
```

Three astrologers with all their reviews:

```json
{ "astrologers": ["31579", "shobhana-978", "https://varta.astrosage.com/astrologer/ar-pdt"], "includeReviews": true, "maxReviewsPerAstrologer": 0 }
```

### Output

One row per astrologer:

```json
{
  "platform": "AstroSage Varta",
  "astrologerId": 33058,
  "slug": "renuastro543",
  "profileUrl": "https://varta.astrosage.com/astrologer/renuastro543",
  "name": "Tarot Renu Rai",
  "gender": "Female",
  "isAI": false,
  "aiPersonaTitle": null,
  "experienceYears": 1,
  "languages": ["Hindi"],
  "skills": ["Tarot Reading"],
  "primarySkill": "Tarot",
  "focusAreas": ["Tarot Reading"],
  "consultationTopics": ["Love", "Career", "Marriage"],
  "pricePerMin": 16,
  "mrpPerMin": 86,
  "discountPct": 81,
  "currency": "INR",
  "rating": 4.93,
  "ratingCount": 1280,
  "followers": 3317,
  "platformRank": 719,
  "isOnline": true,
  "isBusy": false,
  "availableForChat": false,
  "availableForCall": true,
  "availableForVideo": false,
  "isVerified": true,
  "isTarotReader": true,
  "inAppRoster": true,
  "rosterGroup": 13,
  "rosterPosition": 114,
  "liveNow": true,
  "live": {
    "audio": { "price": 22, "introPrice": 10, "listPrice": 132 },
    "video": { "price": 22, "introPrice": 10, "listPrice": 132 },
    "anonymous": { "price": 16, "introPrice": 10, "listPrice": 86 }
  },
  "city": "Ghazipur",
  "state": "Uttar Pradesh",
  "country": "India",
  "bio": "Tarot Renu is a seasoned intuitive consultant recognized for her focused expertise in Tarot Reading…",
  "education": "Bachelor Of Arts from VBS Purvanchal University",
  "minBalanceRequired": 80,
  "imageUrl": "https://www.astrocamp.com/images/astrologer/2x/173937w050awwr.jpg",
  "profileScraped": true,
  "source": "live",
  "scrapedAt": "2026-09-24T09:24:14.522Z"
}
```

With `includeReviews`, each row also has
`"reviews": [{ "feedbackId": 5955559, "rating": 5, "comment": "Very accurate reading, thank you", "date": "2026-09-24", "ratingType": "Verified Purchase" }]`.

#### Field notes

- **pricePerMin / mrpPerMin / discountPct**: the current per-minute price, the struck-through list price, and the discount between them.
- **platformRank**: AstroSage's own ranking number for the astrologer across the whole marketplace (lower means ranked higher). It is available for astrologers in the app listing (online) and for AI personas.
- **isOnline vs liveNow**: `isOnline` means available for chat or call right now; `liveNow` means streaming a live session right now, with its own prices in `live`.
- **inAppRoster / rosterGroup / rosterPosition**: whether the astrologer is in the current app listing, and where.
- **consultationTopics**: the astrologer's top topics (Love, Career, Marriage, Health, Finance, Business, Education, Pregnancy, Legal).
- **gender** is published for astrologers in the app listing, so it is empty for offline profiles in the full directory.
- Fields AstroSage leaves empty come back as `null`, never as made-up values.

### FAQ

**Do I need an AstroSage account?** No. Nothing to log in to, no cookies.

**Is it legal to scrape AstroSage?** This actor only collects information AstroSage shows publicly to anyone browsing its app or website without logging in: astrologer profiles, prices, ratings, live-session prices and reviews. Rows include astrologers' names, photos, cities and bios, which count as personal data in many places, so use the data for a legitimate purpose and handle it in line with data-protection laws such as GDPR, PIPEDA, CCPA and India's DPDP Act, as well as AstroSage's terms. If you are unsure whether your use case is allowed, check with a lawyer. More background: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. It never logs in and uses no account, password, cookie or OTP. It reads the same public listings, profiles and reviews that any visitor can browse. Contact details (phone numbers, email addresses), wallet and payment information, reviewers' names or phone numbers, and live-stream access tokens are never included in the output.

**Are phone numbers or emails included?** No. The actor never collects astrologers' contact details or reviewers' identities. Reviews include only stars, comment, date and review type.

**How fresh is the data?** Live at the time of the run. Online counts, busy/live status and prices change through the day, so schedule runs if you want trends.

**What if a full-directory run hits its timeout?** It stops cleanly before the limit (15% of the timeout, between 20 and 90 seconds), keeps everything scraped so far, and the status message says where it stopped. Resurrect the run to continue from that ID, or split the crawl with `idFrom` / `idTo`.

**What happens when AstroSage is down, blocks the request, or changes something?** The run still finishes as SUCCEEDED with everything collected so far and a status message that says what happened (for example "AstroSage refused our requests (mostly HTTP 403) — 0 astrologers, no charge"). Failed requests are retried on fresh IPs with backoff, a residential fallback kicks in if datacenter IPs keep failing, and a profile call that keeps failing still saves the listing data for that astrologer. You are only ever charged for rows that were actually written to the dataset.

**Can I use `maxResults` or `limit` instead of `maxItems`?** Yes — `maxItems`, `maxResults`, `limit`, `maxAstrologers` and `max` all work. `astrologers` also accepts `ids`, `urls` or `startUrls`, as an array or as a comma/newline-separated string. Mode names are lenient too ("Full directory", "online", "live now", "AI personas").

**Why do INR and USD prices differ so much?** AstroSage sets international prices separately; they are not currency conversions.

**Can I get only newly joined astrologers?** Yes. Astrologer IDs grow over time, so run the full directory with `idFrom` set just above the highest ID from your last run.

# Actor input Schema

## `mode` (type: `string`):

Online astrologers: everyone currently listed in the AstroSage app (about 8,600, every row has the marketplace rank). Full directory: every astrologer profile on AstroSage, online or offline (about 34,000). Specific astrologers: the IDs, profile URLs or slugs you list below. Live now: astrologers streaming live, with live-session prices. AI personas: AstroSage's AI astrologers.

## `astrologers` (type: `array`):

For "Specific astrologers": astrologer IDs (31579), profile URLs (https://varta.astrosage.com/astrologer/jyotiastro66) or slugs (jyotiastro66). Filling this in switches to that mode automatically.

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

Maximum number of astrologers to save. Leave empty for no limit.

## `includeProfile` (type: `boolean`):

Add bio, city, state, country, education, focus areas, chat / call / video availability and minimum wallet balance. One extra request per astrologer. Always on for the full directory and specific astrologers.

## `includeReviews` (type: `boolean`):

Attach the newest client reviews (stars, comment, date, review type) to each astrologer. Reviewer identities are never included.

## `maxReviewsPerAstrologer` (type: `integer`):

How many of the newest reviews to attach. 0 = all (up to 5,000). Reviews load 10 at a time, so large numbers slow the run down.

## `currency` (type: `string`):

Prices as shown to customers in India (INR) or abroad (USD). International prices are set separately by AstroSage, not converted.

## `language` (type: `string`):

Language of names, skills and bios where AstroSage has a translation.

## `skills` (type: `array`):

Keep astrologers whose skills contain any of these words, e.g. Tarot, KP, Vedic, Numerology, Vastu, Lal Kitab, Nadi, Palmistry.

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

Keep astrologers who speak any of these languages, e.g. Hindi, English, Tamil, Bengali, Marathi.

## `minRating` (type: `string`):

Keep astrologers rated at least this (0–5), e.g. 4.5.

## `minRatingCount` (type: `integer`):

Keep astrologers with at least this many ratings.

## `maxPricePerMin` (type: `string`):

Keep astrologers charging at most this per minute, in the currency chosen above (e.g. 30 for ₹30, or 0.5 for $0.50).

## `gender` (type: `string`):

Keep only female or male astrologers. Gender is known for astrologers in the app listing (online), so this filter drops offline profiles in the full directory.

## `verifiedOnly` (type: `boolean`):

Keep only astrologers with AstroSage's verified badge.

## `onlineOnly` (type: `boolean`):

Keep only astrologers who are online right now (useful with the full directory).

## `excludeAI` (type: `boolean`):

Leave out AstroSage's AI astrologers (they appear in the full directory).

## `idFrom` (type: `integer`):

Full directory only: first astrologer ID to scrape. Useful to split a big crawl or to pick up only new astrologers (IDs grow over time).

## `idTo` (type: `integer`):

Full directory only: last astrologer ID to scrape. Leave empty to go to the newest astrologer automatically.

## `maxConcurrency` (type: `integer`):

How many requests run in parallel. Higher is faster; the full directory takes about 10–15 minutes at 25.

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

Apify datacenter proxy works well and is the default. Failed requests retry on fresh IPs, with an automatic residential fallback.

## `appKey` (type: `string`):

Leave empty. Only for support: overrides the built-in client key.

## `appVersion` (type: `string`):

Leave empty. Only for support.

## Actor input object example

```json
{
  "mode": "roster",
  "maxItems": 50,
  "includeProfile": true,
  "includeReviews": false,
  "maxReviewsPerAstrologer": 20,
  "currency": "INR",
  "language": "en",
  "gender": "any",
  "verifiedOnly": false,
  "onlineOnly": false,
  "excludeAI": false,
  "maxConcurrency": 15,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped astrologers.

## `run` (type: `string`):

Status and statistics for this run.

# 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 = {
    "mode": "roster",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/astrosage-astrologer-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 = {
    "mode": "roster",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "mode": "roster",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/astrosage-astrologer-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/astrosage-astrologer-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/FYoRaYP75kzmWpMil/builds/gJFzNQFpALBl5Fajd/openapi.json
