> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Report

> Fetch Google Search Console data based on specified metrics and dimensions

The **Get Report** node lets you fetch Google Search Console performance data across one or more properties using specified metrics, dimensions, and filters. This is an **AI-powered node** that can understand natural language instructions.

***

## When to Use It

Use this node to:

* Generate automated SEO performance reports and dashboards
* Track search metrics and keyword performance over time
* Create data-driven insights for SEO optimization decisions
* Export data for further analysis in external tools
* Monitor organic search performance across multiple websites

***

## Inputs

| Field          | Type                 | Required | Description                                |
| -------------- | -------------------- | -------- | ------------------------------------------ |
| **Properties** | Dynamic multi-select | Yes      | Select one or more GSC properties to query |
| **Date Range** | Date range picker    | Yes      | Select date range for the report           |
| **Metrics**    | Multi-select         | Yes      | Select metrics to include in the report    |
| **Dimensions** | Multi-select         | No       | Select dimensions to segment your data     |
| **Filters**    | Rule-based filters   | No       | Add filters to refine your data            |
| **Order By**   | Sort configuration   | No       | Set the order of results                   |
| **Limit**      | Number               | No       | Maximum number of rows to return           |
| **Options**    | Report options       | No       | Additional options for the report          |

### Filters

Filters allow you to refine your data by applying conditions to specific dimensions or metrics. **Multiple filters use AND logic** - all conditions must be met for a row to be included in the results.

#### Available Filter Operators

| Operator               | Description                     | Example Use Case                     |
| ---------------------- | ------------------------------- | ------------------------------------ |
| **EQUALS**             | Exact match                     | Query equals "digital marketing"     |
| **NOT\_EQUALS**        | Does not match exactly          | Device not equals "TABLET"           |
| **CONTAINS**           | Contains substring              | Query contains "SEO"                 |
| **NOT\_CONTAINS**      | Does not contain substring      | Query doesn't contain "brand"        |
| **IN\_LIST**           | Matches any value in list       | Country in \["US", "UK", "CA"]       |
| **NOT\_IN\_LIST**      | Doesn't match any value in list | Device not in \["TABLET"]            |
| **REGEXP\_MATCH**      | Matches regular expression      | Query matches ".*(SEO\|marketing).*" |
| **NOT\_REGEXP\_MATCH** | Doesn't match regex             | Query doesn't match "test.\*"        |
| **GREATER\_THAN**      | Numeric greater than            | Clicks > 10                          |
| **LESS\_THAN**         | Numeric less than               | Position \< 5                        |
| **IS\_NULL**           | Field has no value              | Country is null                      |
| **IS\_NOT\_NULL**      | Field has a value               | Country is not null                  |

#### Filter Examples

**Example 1: High-performing keywords**

```
- Clicks > 10 (GREATER_THAN)
- Position < 10 (LESS_THAN)
- CTR > 0.05 (GREATER_THAN)
```

**Example 2: SEO-related queries using regex (OR logic)**

```
- Query matches ".*(SEO|optimization|ranking).*" (REGEXP_MATCH)
```

**Example 3: Exclude branded searches**

```
- Query does not contain "brand name" (NOT_CONTAINS)
- Query does not contain "company name" (NOT_CONTAINS)
```

#### OR Logic with Filters

Since multiple filters use AND logic, use these approaches for OR conditions:

1. **IN\_LIST operator**: `Country IN ["US", "UK", "CA", "AU"]`
2. **REGEXP\_MATCH operator**: `Query REGEXP_MATCH ".*(SEO|marketing|digital).*"`
3. **Run separate queries**: Create different workflows for different conditions

### Options Reference

These optional settings let you format the output from Google Search Console before passing it to other nodes.

| Option                          | Description                                                             |
| ------------------------------- | ----------------------------------------------------------------------- |
| **Pretty Column Names**         | Converts column headers to Title Case (e.g. `clicks` becomes `Clicks`)  |
| **Add Percent Sign to Ratios**  | Appends `%` to ratio metrics like CTR                                   |
| **Compact Numbers**             | Converts large numbers to short format (e.g. `10K` instead of `10,000`) |
| **Pivot Dimensions as Columns** | Transforms dimension values into separate columns for easier comparison |

***

## Output

The node returns a structured dataset with search performance metrics and dimensions. The exact format depends on your configuration and the data returned from Google Search Console.

**Typical Output Structure:**

* **Data Rows**: Search performance metrics and dimensions
* **Metadata**: Site information, date ranges, and query details
* **Summary Statistics**: Total records, data freshness, execution time

Can be passed to:

* AI nodes like **Analyze Data** or **Structured Output**
* Export nodes (e.g., Google Sheets)
* Email or Slides nodes

***

## Credit Cost

* **Cost per run**: 1 credit per account

***

## Example Setup

```plaintext theme={"dark"}
Scheduler (Daily 9 AM) →
Get Report →
AI Analysis →
Google Slides Report →
Slack Notification
```

**Configuration Example:**

* **Date Range**: Last 30 days
* **Metrics**: Clicks, Impressions, CTR, Position
* **Dimensions**: Query, Page
* **Filters**: Impressions > 10 (only keywords with significant visibility)
* **Aggregation Level**: Page Level
* **Limit**: 1000 rows

***

## FAQs

<Accordion title="What happens if I select multiple GSC properties?">
  The data will be **aggregated across all selected properties** into a single dataset.\
  If you'd like to break it out by site, add the `site` dimension to segment results per site.
</Accordion>

<Accordion title="Why is my data missing for recent dates?">
  Google Search Console data has a **2-3 day delay**. Data is generally available after 2-3 days, so it's normal to miss data from the last few days. This is a limitation of Google's API, not Markifact.
</Accordion>

<Accordion title="Why is my data different from the Search Console UI?">
  Data discrepancies can occur due to:

  * **Dimension selection**: GSC data is sensitive to dimensions - different dimension combinations can show different results
  * **Aggregation level**: Site vs Page level aggregation affects metrics differently
  * **Sampling**: Large datasets may be sampled differently in the UI vs API
  * **Filters**: Check if you have different filters applied in the UI vs API
</Accordion>

<Accordion title="How do dimensions affect my data?">
  Google Search Console data is very sensitive to the dimensions you select. According to Google's documentation:

  * **Single dimension**: Most accurate, matches Performance View in GSC UI
  * **Multiple dimensions**: May show different totals due to data privacy limitations
  * **Compatible combinations**: Some dimension combinations work better together

  For data that matches the GSC UI exactly, use single dimensions when possible.
</Accordion>

<Accordion title="What's the difference between Site and Page level aggregation?">
  * **Site Level**: Shows metrics for the entire website (like the Overview in GSC)
  * **Page Level**: Shows metrics per individual page/URL (like the Pages report in GSC)

  Choose based on whether you want site-wide insights or page-specific performance data. Note that metrics are calculated differently at each level.
</Accordion>

<Accordion title="Why are some metrics showing as zero or missing?">
  Zero or missing values can indicate:

  * **No search activity**: The pages genuinely had no search performance for those metrics
  * **Privacy thresholds**: Google may hide data below certain thresholds to protect user privacy
  * **Dimension compatibility**: Some dimensions don't work with certain metrics
  * **Date range**: The selected period may have no recorded activity
  * **Site verification**: Ensure your site is properly verified in Search Console
</Accordion>

<Accordion title="Why is my report returning no data?">
  Common causes of empty results:

  * **Date range too recent**: Remember the 2-3 day data delay
  * **Filters too restrictive**: Your filters may exclude all available data
  * **Site not verified**: Ensure the site is verified in Search Console
  * **No search activity**: The site may genuinely have no search performance
  * **Dimension limits**: Some dimension combinations may not return data
</Accordion>

<Accordion title="How do I combine filters with OR logic?">
  Multiple filters always use **AND logic** (all conditions must be true). For OR logic, use:

  **Option 1: IN\_LIST operator**

  ```
  Country IN ["US", "UK", "CA", "AU"]
  ```

  **Option 2: REGEXP\_MATCH operator**

  ```
  Query REGEXP_MATCH ".*(SEO|marketing|digital).*"
  ```

  **Option 3: Run separate workflows**
  Create different Get Report nodes for different conditions, then combine the data downstream.
</Accordion>

<Accordion title="What's the difference between CONTAINS and REGEXP_MATCH?">
  * **CONTAINS**: Simple substring search. `Query CONTAINS "SEO"` finds any query with "SEO" anywhere in the text
  * **REGEXP\_MATCH**: Advanced pattern matching. `Query REGEXP_MATCH "^SEO.*"` finds queries that START with "SEO"

  Use CONTAINS for simple text searches, REGEXP\_MATCH for complex patterns or OR conditions.
</Accordion>

<Accordion title="Why are my filters not working?">
  Common filter issues:

  * **Case sensitivity**: Search Console data is generally case-sensitive
  * **Data type mismatch**: Don't use text operators on numeric fields like clicks or position
  * **Field availability**: Not all dimensions/metrics support all filter operators
  * **Syntax errors**: Check regex patterns for proper escaping
</Accordion>

<Accordion title="Can I get data for specific search types?">
  Yes, you can filter by search type using dimensions:

  * **Web**: Regular Google Search results
  * **Image**: Google Images search results
  * **Video**: Google Video search results
  * **News**: Google News search results

  Add the search type dimension or use filters to focus on specific search types.
</Accordion>

<Accordion title="Why do I see different totals when using multiple dimensions?">
  This is normal behavior due to Google's privacy protection. When you combine multiple dimensions, Google may aggregate or hide some data to protect user privacy. For the most accurate totals, use fewer dimensions or compare with single-dimension reports.
</Accordion>
