Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/pyscrappy/issues.md or /mcp/pyscrappy/issues.json, or Pod over MCP.

Reported issues for PyScrappy

Pod holds 13 of 13 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to PyScrappy.

Most discussed

scrape_stock MCP tool documents quote/profile fields the scraper never returns

The scrape_stock MCP tool docstring advertises quote and profile shapes whose fields the scraper does not emit, so an agent (or user) reading the tool schema is told to read keys that will never be present.

Where

src/pyscrappy/mcp/server.py (the scrape_stock docstring):

- "quote":   {"symbol", "price", "currency", "change", "change_percent", "market_time"}.
- "profile": {"symbol", "name", "sector", "industry", "country", "website", "summary"}.

What the scraper actua

Read the thread · 2026-08-08 · closed · 1 comment

convert_currency docstring states wrong defaults for base and to

The bug

The convert_currency MCP tool docstring states two defaults that don't match the function signature, so an agent reading the doc is misinformed.

Signature (src/pyscrappy/mcp/server.py:332):

async def convert_currency(base: str = "USD", to: str | None = None, amount: float = 1.0)

Docstring (server.py:342-343):

base: Base currency code as a 3-letter ISO 4217 string. Example: "USD". No default (required).
to:   Target currency codes ...; omit or leave empty ...

[Read the thread](https://github.com/mldsveda/PyScrappy/issues/96) · 2026-08-05 · closed · 1 comment

### get_weather docstring promises a 'wind' key but the scraper emits 'wind_speed'

### The bug
The `get_weather` MCP tool docstring promises a `wind` key, but the scraper never emits one — it emits `wind_speed`. A consumer keying `item["wind"]` (per the tool doc) gets a `KeyError`/`None`.

Doc (`src/pyscrappy/mcp/server.py:431`):
> Fetch the current weather … return a dict with keys: temperature (…degrees Celsius), humidity (…percent), **wind** (number, wind speed), condition (…), and location (…).

Scraper output (`src/pyscrappy/scrapers/weather.py:144-148`):
```python
"tempe

[Read the thread](https://github.com/mldsveda/PyScrappy/issues/95) · 2026-08-05 · closed · 1 comment

### GitHubScraper default max_results (30) disagrees with its MCP tool (20)

### The problem
`GitHubScraper` and its MCP tool disagree on the default `max_results`, so the same call returns a different number of results depending on how it's invoked.

- `src/pyscrappy/scrapers/github.py:47` (and `:84`): `max_results: int = 30`
- `src/pyscrappy/mcp/server.py:373`: `search_github(query, max_results: int = 20, ...)`, and the tool docstring (line ~381) says `Default 20`.

So `GitHubScraper().scrape(query="...")` returns up to 30, while the same search through the MCP `search

[Read the thread](https://github.com/mldsveda/PyScrappy/issues/79) · 2026-08-02 · closed · 1 comment

### Make the MCP server's cache TTL configurable (env var)

The MCP server hardcodes its response cache TTL, and the code says so:

```python
# src/pyscrappy/mcp/server.py
# Hardcoded for now; a future version will make this configurable.
_CACHE_TTL = 300.0

Different deployments want different freshness/latency tradeoffs, so this should be configurable — e.g. a PYSCRAPPY_MCP_CACHE_TTL env var, falling back to 300s.

Acceptance

Read the thread · 2026-07-31 · closed · 1 comment

Add a --json output option to the pyscrappy CLI agent

The pyscrappy CLI (the Ollama agent) prints human-readable output. Adding a --json flag that emits the raw ScrapeResult as JSON would make it scriptable and CI-friendly (pipe into jq, etc.).

What

Good first issue: small, self-contained, and ScrapeResult already has to_json().

Acceptance

Read the thread · 2026-07-31 · closed · 1 comment

Document the fastmcp requirement and pyscrappy[mcp] extra in the README

The MCP server now depends on the standalone fastmcp package (Python >=3.10 only), installed via the pyscrappy[mcp] extra. The README's MCP section should make this explicit so users know:

Good first issue: d

Read the thread · 2026-07-31 · closed · 1 comment

search_hackernews doc says 'comments' but the scraper emits 'num_comments'

The bug

The search_hackernews MCP tool docstring says each result has a comments key, but the scraper emits num_comments — so an agent reading item["comments"] gets nothing.

Doc (src/pyscrappy/mcp/server.py:403):

...each with title, url, points, author (username), and comments (comment count).

Scraper (src/pyscrappy/scrapers/hackernews.py:118):

"num_comments": hit.get("num_comments"),

There is no comments key.

What to do

One-word docstring fix: `comme

Read the thread · 2026-08-05 · closed · 0 comments

Most recent

search_images doc lists keys (image_url/thumbnail_url/source_url) the scraper doesn't emit

The bug

The search_images MCP tool docstring documents result keys that the scraper doesn't emit, so a consumer keying by the documented names gets nothing.

Doc (src/pyscrappy/mcp/server.py:264):

Each result is a dict with keys: "image_url", "thumbnail_url", "source_url", "title", "width", "height".

Actual scraper output (src/pyscrappy/scrapers/image_search.py:137-140):

"url": img_url,
"thumbnail": m_data.get("turl", ""),
"title": ...,
"source_page": m_data.ge

[Read the thread](https://github.com/mldsveda/PyScrappy/issues/104) · 2026-08-05 · closed · 0 comments

### search_hackernews MCP tool drops the tags filter the scraper supports

### The problem
`HackerNewsScraper.scrape` supports a `tags` filter (`story`, `comment`, `show_hn`, `ask_hn`, `poll`, …), but the MCP `search_hackernews` tool doesn't expose it — so an agent can only ever get `story` results.

Scraper (`src/pyscrappy/scrapers/hackernews.py:36-49`):
```python
def scrape(self, query, max_results=20, by="relevance", tags="story") -> ScrapeResult:
    ...

tags is wired into the Algolia query in _build_url (hackernews.py:91-95, &tags={tags}).

MCP tool (`

Read the thread · 2026-08-04 · closed · 0 comments

scrape_stock MCP tool drops the interval param (history locked to daily)

The problem

StockScraper.scrape supports an interval parameter for historical data, but the MCP scrape_stock tool doesn't expose it, so every history request through MCP is locked to daily bars.

Scraper (src/pyscrappy/scrapers/stock.py:41-47):

def scrape(self, symbol, mode="quote", period="1mo", interval="1d") -> ScrapeResult:
    ...

interval is threaded into the Yahoo chart URL for history (and is already covered by a test that asserts interval=1wk in the request

Read the thread · 2026-08-04 · closed · 0 comments

search_images MCP tool advertises a 'duckduckgo' engine that isn't implemented

The bug

The search_images MCP tool advertises a duckduckgo engine that the scraper doesn't implement, so engine="duckduckgo" silently returns Bing results with no error.

MCP tool docstring (src/pyscrappy/mcp/server.py:266):

engine: String naming the search engine, one of "bing", "google", or "duckduckgo", e.g. "google". Defaults to "bing".

But the scraper only handles google, and anything else falls through to Bing (src/pyscrappy/scrapers/image_search.py:57-60):


[Read the thread](https://github.com/mldsveda/PyScrappy/issues/88) · 2026-08-04 · closed · 0 comments

### NewsScraper crashes on a network error instead of returning a ScrapeError

### The bug
`NewsScraper` doesn't guard its network fetches, so a network error crashes the whole scrape instead of being returned as a `ScrapeError`. Every other API scraper (crypto, currency, weather, github, hackernews, ikea) wraps its fetch and returns a `ScrapeError` result; News is the outlier.

Unguarded fetches:
- `_scrape_feed` — `src/pyscrappy/scrapers/news.py:82` (`xml_text = self.http.get_html(url)`)
- `_scrape_site` — `src/pyscrappy/scrapers/news.py:102` (`html = self.http.get_html(

[Read the thread](https://github.com/mldsveda/PyScrappy/issues/87) · 2026-08-04 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/mldsveda/PyScrappy/issues).