Claude-code-plugins-plus-skills serpapi-core-workflow-b
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/serpapi-pack/skills/serpapi-core-workflow-b" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-serpapi-core-workflow-b && rm -rf "$T"
manifest:
plugins/saas-packs/serpapi-pack/skills/serpapi-core-workflow-b/SKILL.mdsource content
SerpApi Core Workflow B: Multi-Engine Search
Overview
SerpApi supports 15+ search engines beyond Google. Each engine has its own parameters and result structure. Key engines: YouTube (
search_query), Bing (q), Google News, Google Shopping, Google Maps, Walmart, eBay, Apple App Store.
Instructions
Step 1: YouTube Search
import serpapi, os client = serpapi.Client(api_key=os.environ["SERPAPI_API_KEY"]) # YouTube uses search_query (not q) yt = client.search(engine="youtube", search_query="python asyncio tutorial") for video in yt.get("video_results", []): print(f"{video['title']}") print(f" Channel: {video.get('channel', {}).get('name')}") print(f" Views: {video.get('views')}, Length: {video.get('length')}") print(f" Link: {video['link']}") print(f" Published: {video.get('published_date')}")
Step 2: Bing Search
bing = client.search(engine="bing", q="machine learning frameworks", count=10) for r in bing.get("organic_results", []): print(f"{r['position']}. {r['title']}") print(f" {r['link']}") # Bing has different snippet structure print(f" {r.get('snippet', 'N/A')}")
Step 3: Google News
news = client.search(engine="google_news", q="artificial intelligence", gl="us", hl="en") for article in news.get("news_results", []): print(f"{article['title']}") print(f" Source: {article['source']['name']}") print(f" Date: {article.get('date')}") print(f" Link: {article['link']}") # News often has thumbnail if "thumbnail" in article: print(f" Image: {article['thumbnail']}")
Step 4: Google Shopping
shopping = client.search( engine="google_shopping", q="mechanical keyboard", gl="us", hl="en", ) for product in shopping.get("shopping_results", []): print(f"{product['title']}") print(f" Price: {product.get('price')}") print(f" Source: {product.get('source')}") print(f" Rating: {product.get('rating')} ({product.get('reviews', 0)} reviews)") print(f" Link: {product['link']}")
Step 5: Google Maps / Local
maps = client.search( engine="google_maps", q="pizza restaurants", ll="@30.2672,-97.7431,14z", # Austin, TX coordinates + zoom ) for place in maps.get("local_results", []): print(f"{place['title']} - {place.get('rating', 'N/A')} stars ({place.get('reviews', 0)} reviews)") print(f" Address: {place.get('address')}") print(f" Phone: {place.get('phone')}") print(f" Type: {place.get('type')}") print(f" Hours: {place.get('operating_hours', {}).get('monday')}")
Step 6: Cross-Engine Comparison
def multi_search(query: str) -> dict: """Search across multiple engines for the same query.""" engines = [ {"engine": "google", "q": query}, {"engine": "bing", "q": query}, {"engine": "youtube", "search_query": query}, {"engine": "google_news", "q": query}, ] results = {} for params in engines: result = client.search(**params) engine = params["engine"] key = "organic_results" if engine != "youtube" else "video_results" if engine == "google_news": key = "news_results" results[engine] = result.get(key, [])[:3] return results # 4 API credits total
Error Handling
| Error | Engine | Solution |
|---|---|---|
required | YouTube | Use not |
No | Google Shopping | Query must be product-related |
Empty | Google Maps | Add parameter with coordinates |
vs | Bing | Bing uses , Google uses |
Resources
Next Steps
For common errors, see
serpapi-common-errors.