Serpapi core workflow b
425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill serpapi-core-workflow-bAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
'Search Bing, YouTube, Google Shopping, Google News, and Google Maps with SerpApi.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.5 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
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 |
|---|---|---|
search_query required | YouTube | Use search_query not q |
No shopping_results | Google Shopping | Query must be product-related |
Empty local_results | Google Maps | Add ll parameter with coordinates |
count vs num | Bing | Bing uses count, Google uses num |
Resources
Next Steps
For common errors, see serpapi-common-errors.