Skip to main content

Python scraper to extract AI responses from Perplexity's web interface.

Project description

Perplexity WebUI Scraper

Python scraper to extract AI responses from Perplexity's web interface.

PyPI Python License


Installation

As a Library

# From PyPI (stable)
uv add perplexity-webui-scraper

# From GitHub dev branch (latest features)
uv add git+https://github.com/henrique-coder/perplexity-webui-scraper.git@dev

As MCP Server

No installation required - uvx handles everything automatically:

# From PyPI (stable)
uvx --from perplexity-webui-scraper[mcp]@latest perplexity-webui-scraper-mcp

# From GitHub dev branch (latest features)
uvx --from "perplexity-webui-scraper[mcp]@git+https://github.com/henrique-coder/perplexity-webui-scraper.git@dev" perplexity-webui-scraper-mcp

# From local directory (for development)
uv --directory /path/to/perplexity-webui-scraper run perplexity-webui-scraper-mcp

Requirements

  • Perplexity Pro/Max account
  • Session token (__Secure-next-auth.session-token cookie)

Getting Your Session Token

Option 1: Automatic (CLI Tool)

uv run get-perplexity-session-token

This interactive tool will:

  1. Ask for your Perplexity email
  2. Send a verification code to your email
  3. Accept either a 6-digit code or magic link
  4. Extract and display your session token
  5. Optionally save it to your .env file

Option 2: Manual (Browser)

  1. Log in at perplexity.ai
  2. Open DevTools (F12) → Application/Storage → Cookies
  3. Copy the value of __Secure-next-auth.session-token
  4. Store in .env: PERPLEXITY_SESSION_TOKEN="your_token"

Quick Start

from perplexity_webui_scraper import Perplexity

client = Perplexity(session_token="YOUR_TOKEN")
conversation = client.create_conversation()

conversation.ask("What is quantum computing?")
print(conversation.answer)

# Follow-up (context is preserved)
conversation.ask("Explain it simpler")
print(conversation.answer)

Streaming

for chunk in conversation.ask("Explain AI", stream=True):
    print(chunk.answer)

With Options

from perplexity_webui_scraper import (
    ConversationConfig,
    Coordinates,
    Models,
    SourceFocus,
)

config = ConversationConfig(
    model=Models.DEEP_RESEARCH,
    source_focus=[SourceFocus.WEB, SourceFocus.ACADEMIC],
    language="en-US",
    coordinates=Coordinates(latitude=12.3456, longitude=-98.7654),
)

conversation = client.create_conversation(config)
conversation.ask("Latest AI research", files=["paper.pdf"])

API Reference

Perplexity(session_token, config?)

Parameter Type Description
session_token str Browser cookie
config ClientConfig Timeout, TLS, etc.

Conversation.ask(query, model?, files?, citation_mode?, stream?)

Parameter Type Default Description
query str - Question (required)
model Model Models.BEST AI model
files list[str | PathLike] None File paths
citation_mode CitationMode CLEAN Citation format
stream bool False Enable streaming

Models

Model Description Tier
Models.BEST Pro - Automatically selects the most responsive model based on the query pro
Models.DEEP_RESEARCH Deep research - Fast and thorough for routine research pro
Models.SONAR Sonar - Perplexity's latest model pro
Models.GEMINI_3_FLASH Gemini 3 Flash - Google's fast model pro
Models.GEMINI_3_FLASH_THINKING Gemini 3 Flash Thinking - Google's fast model pro
Models.GEMINI_31_PRO Gemini 3.1 Pro - Google's latest model pro
Models.GEMINI_31_PRO_THINKING Gemini 3.1 Pro Thinking - Google's latest model with thinking pro
Models.GPT_52 GPT-5.2 - OpenAI's latest model pro
Models.GPT_52_THINKING GPT-5.2 Thinking - OpenAI's latest model with thinking pro
Models.CLAUDE_46_SONNET Claude Sonnet 4.6 - Anthropic's fast model pro
Models.CLAUDE_46_SONNET_THINKING Claude Sonnet 4.6 Thinking - Anthropic's newest reasoning model pro
Models.CLAUDE_46_OPUS Claude Opus 4.6 - Anthropic's most advanced model max
Models.CLAUDE_46_OPUS_THINKING Claude Opus 4.6 Thinking - Anthropic's Opus reasoning model with thinking max
Models.GROK_41 Grok 4.1 - xAI's latest model pro
Models.GROK_41_THINKING Grok 4.1 Thinking - xAI's latest model pro
Models.KIMI_K25_THINKING Kimi K2.5 - Moonshot AI's latest model pro

CitationMode

Mode Output
DEFAULT text[1]
MARKDOWN text[1](url)
CLEAN text (no citations)

ConversationConfig

Parameter Default Description
model Models.BEST Default model
citation_mode CLEAN Citation format
save_to_library False Save to library
search_focus WEB Search type
source_focus WEB Source types
time_range ALL Time filter
language "en-US" Response language
timezone None Timezone
coordinates None Location (lat/lng)

Exceptions

Exception Description
PerplexityError Base exception for all library errors
HTTPError HTTP error with status code and response body
AuthenticationError Session token is invalid or expired (HTTP 401/403)
RateLimitError Rate limit exceeded (HTTP 429)
FileUploadError File upload failed
FileValidationError File validation failed (size, type, etc.)
ResearchClarifyingQuestionsError Research mode asking clarifying questions
ResponseParsingError API response could not be parsed
StreamingError Error during streaming response

MCP Server (Model Context Protocol)

The library includes an MCP server for AI assistants like Claude Desktop and Antigravity.

Each AI model is exposed as a separate tool - enable only the ones you need to reduce agent context size.

Configuration

Add to your MCP config file (no installation required):

Claude Desktop (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "perplexity-webui-scraper": {
      "command": "uvx",
      "args": [
        "--from",
        "perplexity-webui-scraper[mcp]@latest",
        "perplexity-webui-scraper-mcp"
      ],
      "env": {
        "PERPLEXITY_SESSION_TOKEN": "your_token_here"
      }
    }
  }
}

From GitHub dev branch:

{
  "mcpServers": {
    "perplexity-webui-scraper": {
      "command": "uvx",
      "args": [
        "--from",
        "perplexity-webui-scraper[mcp]@git+https://github.com/henrique-coder/perplexity-webui-scraper.git@dev",
        "perplexity-webui-scraper-mcp"
      ],
      "env": {
        "PERPLEXITY_SESSION_TOKEN": "your_token_here"
      }
    }
  }
}

From local directory (for development):

{
  "mcpServers": {
    "perplexity-webui-scraper": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/perplexity-webui-scraper",
        "run",
        "perplexity-webui-scraper-mcp"
      ],
      "env": {
        "PERPLEXITY_SESSION_TOKEN": "your_token_here"
      }
    }
  }
}

Available Tools

Each tool uses a specific AI model. Enable only the ones you need:

Tool Model Description Tier
pplx_ask Pro Automatically selects the most responsive model based on the query pro
pplx_deep_research Deep research Fast and thorough for routine research pro
pplx_sonar Sonar Perplexity's latest model pro
pplx_gemini_flash Gemini 3 Flash Google's fast model pro
pplx_gemini_flash_think Gemini 3 Flash Thinking Google's fast model pro
pplx_gemini31_pro Gemini 3.1 Pro Google's latest model pro
pplx_gemini31_pro_think Gemini 3.1 Pro Thinking Google's latest model with thinking pro
pplx_gpt52 GPT-5.2 OpenAI's latest model pro
pplx_gpt52_thinking GPT-5.2 Thinking OpenAI's latest model with thinking pro
pplx_claude_s46 Claude Sonnet 4.6 Anthropic's fast model pro
pplx_claude_s46_think Claude Sonnet 4.6 Thinking Anthropic's newest reasoning model pro
pplx_claude_o46 Claude Opus 4.6 Anthropic's most advanced model max
pplx_claude_o46_think Claude Opus 4.6 Thinking Anthropic's Opus reasoning model with thinking max
pplx_grok41 Grok 4.1 xAI's latest model pro
pplx_grok41_think Grok 4.1 Thinking xAI's latest model pro
pplx_kimi_k25_think Kimi K2.5 Moonshot AI's latest model pro

All tools support source_focus: web, academic, social, finance, all

Disclaimer

This is an unofficial library. It uses internal APIs that may change without notice. Use at your own risk.

By using this library, you agree to Perplexity AI's Terms of Service.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perplexity_webui_scraper-0.5.0.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

perplexity_webui_scraper-0.5.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file perplexity_webui_scraper-0.5.0.tar.gz.

File metadata

  • Download URL: perplexity_webui_scraper-0.5.0.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for perplexity_webui_scraper-0.5.0.tar.gz
Algorithm Hash digest
SHA256 e75343c649e91fa032e95763f09e455cae45b3ae28d381ca27dfe06f658d246a
MD5 a624fd34dfef4b0c89b3af4320f5365c
BLAKE2b-256 3046b0ee84c23186b1611274793a151907e54f7aa213d2311afde76357c4cd16

See more details on using hashes here.

File details

Details for the file perplexity_webui_scraper-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: perplexity_webui_scraper-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for perplexity_webui_scraper-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 637f080c1b006489d2e73b4c1b558805978afd6248313433f77e72c32b51c17d
MD5 022188b4ffb78f82f7b73543613e863b
BLAKE2b-256 41e54134cc04242b5475086ab4d4470c7b3c278c0bd77914214a0e800cf9499a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page