Skip to content

feat(piloterr): add Piloterr integration - #9837

Open
josselinlbe wants to merge 2 commits into
simstudioai:stagingfrom
piloterr:feat/piloterr-integration
Open

josselinlbe wants to merge 2 commits into
simstudioai:stagingfrom
piloterr:feat/piloterr-integration

Conversation

@josselinlbe

Copy link
Copy Markdown

Summary

Adds a Piloterr integration: tools, block, icon and generated docs page. I work on Piloterr, so this PR comes from the Piloterr team.

Fetch or render any web page, take screenshots, detect a website's technologies, search Google, Amazon and eBay, and get structured LinkedIn and Crunchbase company profiles and Zillow properties, with proxies and anti-bot handling included.

Operations:

  • Fetch HTML (piloterr_fetch_html): Fetch a public web page over fast HTTP, without running JavaScript, and get its HTML.
  • Render HTML (piloterr_render_html): Render a JavaScript-heavy page in a headless browser and get the HTML after rendering.
  • Take Screenshot (piloterr_screenshot): Capture a public web page as a PNG, JPEG, WebP image or a PDF, by viewport, full page or CSS selector, and store it as a file.
  • Detect Technologies (piloterr_detect_technologies): Detect the technologies a website runs, such as its CMS, frameworks, analytics, CDN and hosting.
  • Google Search (piloterr_google_search): Search Google and get organic results with their position, title, link and snippet, the knowledge graph and the estimated total.
  • Amazon Search (piloterr_amazon_search): Search an Amazon marketplace and get products with ASIN, title, price, rating and review count.
  • Get eBay Listing (piloterr_ebay_get_listing): Get an eBay listing by item ID or URL, with its price, condition, availability, seller, shipping and item specifics.
  • eBay Search (piloterr_ebay_search): Search eBay listings by keyword or search URL and get their price, condition, buying format, shipping and seller.
  • Get LinkedIn Company (piloterr_linkedin_company): Get a LinkedIn company's profile by page URL, slug or ID, or by website domain: industry, size, headquarters, specialties and followers.
  • Get Crunchbase Company (piloterr_crunchbase_company): Get a company's Crunchbase profile by name, permalink or URL, or by website domain: description, size, categories, locations, investors and products.
  • Get Zillow Property (piloterr_zillow_property): Get a Zillow home from its homedetails URL: address, price, Zestimate, status, size, rooms, year built and photos.

Credentials are a Piloterr API key on the block (AuthMode.ApiKey), sent as the x-api-key header. Every tool is an external ToolConfig.request against the Piloterr API.

Product update (if relevant)

Sales, e-commerce and research teams can scrape pages, monitor marketplace prices, and enrich accounts with LinkedIn and Crunchbase data. The block appears in the integrations catalog with 7 templates and grounded skills; the docs page is apps/docs/content/docs/integrations/piloterr.mdx.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Other: ___________

Testing

  • Outputs follow the documented OpenAPI response schemas, and every tool was run against the live Piloterr API through its request and transformResponse to confirm the mapped outputs; fields that the API documents as nullable are optional outputs.
  • Local gate on this branch: bun run lint, bun run type-check, bun run check:audits (all 62 audits), bun run apps/sim/scripts/check-block-registry.ts origin/staging, bun run apps/sim/scripts/check-canvas-sentences.ts --block=piloterr, and the existing blocks and tools/request-transport Vitest suites all pass.
  • Regenerated artifacts are committed: tool metadata, docs, block successors and the docs manifest.
  • No new unit tests, following the repo's testing guidance; the live run above is the end-to-end check.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Screenshots/Videos

Add a Piloterr block for web scraping and structured data:
- Fetch a page's HTML, render a JavaScript page, or take a screenshot
- Detect the technologies a website runs
- Search Google, Amazon and eBay
- Get LinkedIn and Crunchbase company profiles by page, name or website
  domain
- Get an eBay listing or a Zillow home

Outputs follow the documented OpenAPI schemas and were checked against live
responses. Credentials are a Piloterr API key sent in the x-api-key header.
@vercel

vercel Bot commented Nov 10, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the Sim Team on Vercel.

A member of the Team first needs to authorize it.

@greptile-apps

greptile-apps Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Medium impact] Piloterr adds external data lookups to workflows that choose to use the new integration.

The PR appears safe to merge, with non-blocking fixes for agent number checks and the Google Search description.

Findings

  1. P2 Agent tools skip number checks ▶
  2. P2 Knowledge graph output is missing ▶

Summary

Adds Piloterr with eleven tools for web scraping, screenshots, search, and company and property research.

  • Piloterr can fetch and render web pages, save screenshots, detect technologies, and search Google.
  • Piloterr searches Amazon and eBay and retrieves individual eBay listings.
  • Piloterr returns company profiles from LinkedIn and Crunchbase and details for Zillow homes.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Workflow block or agent tool] --> B[Select Piloterr operation]
  B --> C[Build request with API key]
  C --> D[Piloterr API]
  D --> E[Map response fields]
  D --> F[Store screenshot file]
  E --> G[Return tool output]
  F --> G
Loading

Reviews (1) · Last reviewed commit: "feat(piloterr): add Piloterr integration" · Reviewed by Greptile

Comment thread apps/sim/blocks/blocks/piloterr.ts Outdated
Comment on lines +308 to +310
params: (params) => {
const result: Record<string, unknown> = {}
if (params.operation === 'render_html') {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Agent tools skip number checks

tools.config.params checks params.operation, but agent tools keep the selected operation separately and pass it through the second callback argument. After switching a Piloterr agent tool to a search or screenshot operation, its numeric inputs skip this mapper. Saved short-input strings stay strings, and blank values are sent instead of being omitted. Read context?.operation ?? params.operation before choosing which numbers to parse.

id: 'piloterr_google_search',
name: 'Piloterr Google Search',
description:
'Search Google and get organic results with their position, title, link and snippet, the knowledge graph and the estimated total.',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Knowledge graph output is missing

piloterr_google_search promises a knowledge graph, but its response mapper and output fields expose only results, totalResults, and hasNextPage. Workflows and agents cannot read the advertised company or entity details. Expose the knowledge graph, or remove that promise from the tool description and generated docs and catalog.

- Describe Google Search without a knowledge graph, which it does not return
- Read the operation from the mapper context so agent tools coerce numeric
  inputs too
- Keep response mappers with a single caller in that tool's file
- Document the PiloterrIcon export

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant