{
  "service": "zenserp",
  "displayName": "Zenserp",
  "categories": [
    "Data",
    "Location"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "ZENSERP_API_KEY",
      "description": "Zenserp API key sent with the apikey header. Create or view it in the Zenserp documentation portal after signing in: https://app.zenserp.com/documentation.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://zenserp.com",
  "actions": [
    {
      "id": "zenserp.google_image_search",
      "service": "zenserp",
      "name": "google_image_search",
      "description": "Run a Google Image Search request through Zenserp.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "Search query sent to Zenserp."
          },
          "searchEngine": {
            "type": "string",
            "minLength": 1,
            "description": "Search engine domain sent as the search_engine query parameter."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "Geo location string sent to Zenserp when localized results are needed."
          },
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "Language code sent to Zenserp."
          },
          "gl": {
            "type": "string",
            "minLength": 1,
            "description": "Country code sent to Zenserp."
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to request."
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based result offset used for pagination."
          }
        },
        "additionalProperties": false,
        "required": [
          "q"
        ],
        "description": "Input parameters for running a Google Image Search request through Zenserp."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "image_results": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One Google Image Search result item."
                },
                "description": "Image search results returned by Zenserp."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Normalized output payload for google_image_search."
      }
    },
    {
      "id": "zenserp.google_maps_search",
      "service": "zenserp",
      "name": "google_maps_search",
      "description": "Run a Google Maps local search request through Zenserp.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "Search query sent to Zenserp."
          },
          "searchEngine": {
            "type": "string",
            "minLength": 1,
            "description": "Search engine domain sent as the search_engine query parameter."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "Geo location string sent to Zenserp when localized results are needed."
          },
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "Language code sent to Zenserp."
          },
          "gl": {
            "type": "string",
            "minLength": 1,
            "description": "Country code sent to Zenserp."
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to request."
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based result offset used for pagination."
          }
        },
        "additionalProperties": false,
        "required": [
          "q"
        ],
        "description": "Input parameters for running a Google Maps request through Zenserp."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "local_results": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One Google Maps local result item."
                },
                "description": "Local results returned by Zenserp."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Normalized output payload for google_maps_search."
      }
    },
    {
      "id": "zenserp.google_news_search",
      "service": "zenserp",
      "name": "google_news_search",
      "description": "Run a Google News request through Zenserp.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "Search query sent to Zenserp."
          },
          "searchEngine": {
            "type": "string",
            "minLength": 1,
            "description": "Search engine domain sent as the search_engine query parameter."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "Geo location string sent to Zenserp when localized results are needed."
          },
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "Language code sent to Zenserp."
          },
          "gl": {
            "type": "string",
            "minLength": 1,
            "description": "Country code sent to Zenserp."
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to request."
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based result offset used for pagination."
          }
        },
        "additionalProperties": false,
        "required": [
          "q"
        ],
        "description": "Input parameters for running a Google News request through Zenserp."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "news_results": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One Google News result item."
                },
                "description": "News results returned by Zenserp."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Normalized output payload for google_news_search."
      }
    },
    {
      "id": "zenserp.search",
      "service": "zenserp",
      "name": "search",
      "description": "Run a Google Search request through Zenserp and return the first-pass common result surfaces.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "Search query sent to Zenserp."
          },
          "searchEngine": {
            "type": "string",
            "minLength": 1,
            "description": "Search engine domain sent as the search_engine query parameter."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "Geo location string sent to Zenserp when localized results are needed."
          },
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "Language code sent to Zenserp."
          },
          "gl": {
            "type": "string",
            "minLength": 1,
            "description": "Country code sent to Zenserp."
          },
          "num": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to request."
          },
          "start": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based result offset used for pagination."
          }
        },
        "additionalProperties": false,
        "required": [
          "q"
        ],
        "description": "Input parameters for running a Google Search request through Zenserp."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organic": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One organic result item."
                },
                "description": "Organic results returned by Zenserp."
              },
              {
                "type": "null"
              }
            ]
          },
          "knowledge_graph": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Knowledge Graph payload returned by Zenserp when available."
              },
              {
                "type": "null"
              }
            ]
          },
          "related_searches": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One related search item."
                },
                "description": "Related searches returned by Zenserp when available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "description": "Normalized output payload for search."
      }
    }
  ]
}
