get_serp_text
Extract text content from search engine results pages (SERPs) by query, search engine, country, and page count for SEO analysis and keyword research.
Instructions
Get search engine results with text content
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | The country to search from. Default: us | us |
| pages_number | No | The number of pages to search (1-30). Default: 1 | |
| query | Yes | The query to search | |
| search_engine | No | The search engine to use (google, bing, yahoo, duckduckgo). Default: google |
Input Schema (JSON Schema)
{
"properties": {
"country": {
"default": "us",
"description": "The country to search from. Default: us",
"type": "string"
},
"pages_number": {
"default": 1,
"description": "The number of pages to search (1-30). Default: 1",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "The query to search",
"type": "string"
},
"search_engine": {
"default": "google",
"description": "The search engine to use (google, bing, yahoo, duckduckgo). Default: google",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
}
Implementation Reference
- index.js:667-668 (handler)Handler case for the 'get_serp_text' tool. It invokes the makeRequest helper to call the FetchSERP API endpoint '/api/v1/serp_text' with the provided arguments.case 'get_serp_text': return await this.makeRequest('/api/v1/serp_text', 'GET', args, null, token);
- index.js:405-435 (schema)Input schema definition for the 'get_serp_text' tool, specifying parameters like query (required), search_engine, country, and pages_number.{ name: 'get_serp_text', description: 'Get search engine results with text content', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The query to search', }, search_engine: { type: 'string', description: 'The search engine to use (google, bing, yahoo, duckduckgo). Default: google', default: 'google', }, country: { type: 'string', description: 'The country to search from. Default: us', default: 'us', }, pages_number: { type: 'integer', description: 'The number of pages to search (1-30). Default: 1', default: 1, minimum: 1, maximum: 30, }, }, required: ['query'], }, },
- index.js:565-613 (helper)Shared helper method 'makeRequest' that handles API calls to FetchSERP, including authentication, parameter handling, and error management. This is the core logic executed for the 'get_serp_text' tool.async makeRequest(endpoint, method = 'GET', params = {}, body = null, token = null) { const fetchserpToken = token || process.env.FETCHSERP_API_TOKEN; if (!fetchserpToken) { throw new McpError( ErrorCode.InvalidRequest, 'FETCHSERP_API_TOKEN is required' ); } const url = new URL(`${API_BASE_URL}${endpoint}`); // Add query parameters for GET requests if (method === 'GET' && Object.keys(params).length > 0) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (Array.isArray(value)) { value.forEach(v => url.searchParams.append(`${key}[]`, v)); } else { url.searchParams.append(key, value.toString()); } } }); } const fetchOptions = { method, headers: { 'Authorization': `Bearer ${fetchserpToken}`, 'Content-Type': 'application/json', }, }; if (body && method !== 'GET') { fetchOptions.body = JSON.stringify(body); } const response = await fetch(url.toString(), fetchOptions); if (!response.ok) { const errorText = await response.text(); throw new McpError( ErrorCode.InternalError, `API request failed: ${response.status} ${response.statusText} - ${errorText}` ); } return await response.json(); }