<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><atom:link href="https://www.metadapi.com/DesktopModules/LiveBlog/API/Syndication/GetRssFeeds?mid=998&amp;PortalId=0&amp;tid=145&amp;ItemCount=20" rel="self" type="application/rss+xml"/><title>Metadapi Technical Blog</title><description>Metadapi API's Blog with tutorials,  announcements and technical articles.</description><link>https://www.metadapi.com/Blog</link><item><title>API Testing Tools: Which Tool Should You Use at Each Stage of the API Development Lifecycle?</title><link>https://www.metadapi.com/Blog/PostId/36/api-testing-tools-which-tool-should-you-use-at-each-stage-of-the-api-development-lifecycle</link><category>Developer Solutions</category><pubDate>Sat, 05 Sep 2026 15:59:00 GMT</pubDate><description>&lt;p&gt;Building a reliable API requires much more than sending a few HTTP requests and checking whether a &lt;code&gt;200 OK&lt;/code&gt; response comes back. Modern APIs need to be tested throughout their entire lifecycle—from the initial API contract through development, integration, automated regression testing, performance testing, security testing, and production monitoring.&lt;/p&gt;

&lt;p&gt;Fortunately, there are many excellent API testing tools available. Unfortunately, this abundance of options can make choosing the right tool confusing.&lt;/p&gt;

&lt;p&gt;The most important thing to understand is that &lt;strong&gt;there is no single API testing tool that is perfect for every situation&lt;/strong&gt;. A developer manually debugging an endpoint has different needs than a QA engineer building regression tests. Likewise, a performance engineer testing thousands of concurrent API requests needs a completely different type of tool.&lt;/p&gt;

&lt;p&gt;This article reviews some of the most popular API testing tools and explains &lt;strong&gt;where each one fits into the API development lifecycle&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;The API Testing Lifecycle&lt;/h2&gt;

&lt;p&gt;Before looking at individual tools, it helps to divide API testing into several stages:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;API Design and Contract Validation&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Developer Exploratory Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Functional and Integration Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Automated Regression Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Performance and Load Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Security Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;CI/CD Pipeline Testing&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Production Monitoring&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some tools cover multiple stages, while others are highly specialized. The best API teams typically use a combination of tools rather than forcing one tool to solve every testing problem.&lt;/p&gt;

&lt;h2&gt;Quick Comparison of API Testing Tools&lt;/h2&gt;

&lt;table class="table table-striped"&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th&gt;Tool&lt;/th&gt;
			&lt;th&gt;Best For&lt;/th&gt;
			&lt;th&gt;Lifecycle Stage&lt;/th&gt;
			&lt;th&gt;Learning Curve&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;Postman&lt;/td&gt;
			&lt;td&gt;General API development and collaboration&lt;/td&gt;
			&lt;td&gt;Development through CI/CD&lt;/td&gt;
			&lt;td&gt;Easy&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Insomnia&lt;/td&gt;
			&lt;td&gt;Fast exploratory API testing&lt;/td&gt;
			&lt;td&gt;Development&lt;/td&gt;
			&lt;td&gt;Easy&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Bruno&lt;/td&gt;
			&lt;td&gt;Git-native API testing&lt;/td&gt;
			&lt;td&gt;Development and automated testing&lt;/td&gt;
			&lt;td&gt;Easy&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;SoapUI&lt;/td&gt;
			&lt;td&gt;SOAP and enterprise API testing&lt;/td&gt;
			&lt;td&gt;Functional and regression testing&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;REST Assured&lt;/td&gt;
			&lt;td&gt;Code-based API automation&lt;/td&gt;
			&lt;td&gt;Automated regression and CI/CD&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Karate&lt;/td&gt;
			&lt;td&gt;Behavior-driven API testing&lt;/td&gt;
			&lt;td&gt;Automation and regression testing&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Apache JMeter&lt;/td&gt;
			&lt;td&gt;Load and performance testing&lt;/td&gt;
			&lt;td&gt;Performance testing&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;k6&lt;/td&gt;
			&lt;td&gt;Developer-friendly performance testing&lt;/td&gt;
			&lt;td&gt;Performance and CI/CD&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Katalon&lt;/td&gt;
			&lt;td&gt;Unified API and UI testing&lt;/td&gt;
			&lt;td&gt;QA automation lifecycle&lt;/td&gt;
			&lt;td&gt;Easy to Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;OWASP ZAP&lt;/td&gt;
			&lt;td&gt;API security testing&lt;/td&gt;
			&lt;td&gt;Security testing&lt;/td&gt;
			&lt;td&gt;Moderate&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Datadog Synthetic Monitoring&lt;/td&gt;
			&lt;td&gt;Production API validation&lt;/td&gt;
			&lt;td&gt;Production Monitoring&lt;/td&gt;
			&lt;td&gt;Easy&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;New Relic Synthetics&lt;/td&gt;
			&lt;td&gt;API availability and workflow monitoring&lt;/td&gt;
			&lt;td&gt;Production Monitoring&lt;/td&gt;
			&lt;td&gt;Easy&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Postman Monitors&lt;/td&gt;
			&lt;td&gt;Continuous execution of API tests&lt;/td&gt;
			&lt;td&gt;Production Monitoring / CI-CD&lt;/td&gt;
			&lt;td&gt;Easy to Moderate&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;1. Postman&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.postman.com/" target="_blank"&gt;https://www.postman.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;General-purpose API development, exploratory testing, functional testing, collaboration, and automated API testing.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Postman is one of the most versatile tools in the API ecosystem. It can be used from the earliest stages of API development through automated testing and CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;A typical developer workflow might look like this:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Create or import an OpenAPI specification.&lt;/li&gt;
	&lt;li&gt;Build individual requests to test endpoints.&lt;/li&gt;
	&lt;li&gt;Create collections representing API workflows.&lt;/li&gt;
	&lt;li&gt;Add automated assertions.&lt;/li&gt;
	&lt;li&gt;Configure environments for development, staging, and production.&lt;/li&gt;
	&lt;li&gt;Run collections automatically in CI/CD pipelines&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Postman has evolved from a simple HTTP client into a comprehensive API platform. Its biggest strength is breadth: developers can design APIs, create mock servers, manually test endpoints, build automated tests, manage environments, document APIs, and integrate tests into CI/CD workflows from a single ecosystem.&lt;/p&gt;

&lt;p&gt;It is particularly useful for teams because collections provide a common way to document and test API behavior. A well-designed Postman collection can serve as both executable tests and living API examples.&lt;/p&gt;

&lt;p&gt;The downside is that Postman can feel heavyweight if all you need is a quick HTTP request. Its growing feature set also means that some developers prefer simpler, local-first alternatives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; If you need one versatile tool for general API development and testing, Postman remains an excellent starting point.&lt;/p&gt;

&lt;h2&gt;2. Insomnia&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://insomnia.rest/" target="_blank"&gt;https://insomnia.rest/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Fast exploratory testing, debugging APIs, and developers who prefer a simpler API client experience.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Insomnia is most useful during active API development. It is particularly well suited for the question:&lt;/p&gt;

&lt;blockquote&gt;"I just changed this endpoint. Let me quickly send some requests and see what happens."&lt;/blockquote&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Insomnia provides a clean and developer-focused interface for working with APIs. It supports modern API technologies including REST, GraphQL, gRPC, and WebSocket-based workflows.&lt;/p&gt;

&lt;p&gt;Compared with larger API platforms, Insomnia tends to feel more focused on the developer's immediate workflow: creating requests, managing authentication, testing responses, and debugging services.&lt;/p&gt;

&lt;p&gt;Its main limitation is that organizations looking for a complete API lifecycle platform—including extensive documentation, governance, monitoring, and enterprise collaboration—may eventually need additional tooling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Excellent for developers who want a fast, focused tool primarily for exploring and debugging APIs.&lt;/p&gt;

&lt;h2&gt;3. Bruno&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.usebruno.com/" target="_blank"&gt;https://www.usebruno.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Developers and teams that want API collections stored locally and managed through Git.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Bruno fits particularly well into a modern Git-based development workflow. API test definitions can live directly alongside application source code.&lt;/p&gt;

&lt;p&gt;This makes it useful during:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Local development&lt;/li&gt;
	&lt;li&gt;Code reviews&lt;/li&gt;
	&lt;li&gt;Automated regression testing&lt;/li&gt;
	&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Bruno has gained popularity because of its local-first and Git-native philosophy. Rather than making a cloud workspace the center of collaboration, Bruno stores collections as files that can be committed to source control.&lt;/p&gt;

&lt;p&gt;This approach has significant advantages for software engineering teams. API requests and tests can be versioned alongside the code that implements the API. Pull requests can show changes to both the API implementation and its corresponding tests.&lt;/p&gt;

&lt;p&gt;Bruno is especially attractive for teams concerned about privacy, vendor lock-in, or keeping development artifacts entirely under source control.&lt;/p&gt;

&lt;p&gt;The tradeoff is that it may not offer the same level of enterprise collaboration and ecosystem features found in larger API platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; One of the best choices for engineering teams that follow a Git-first workflow.&lt;/p&gt;

&lt;h2&gt;4. SoapUI&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.soapui.org/" target="_blank"&gt;https://www.soapui.org/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Enterprise APIs, especially environments that still use SOAP services alongside REST APIs.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;SoapUI is particularly useful for:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Functional testing&lt;/li&gt;
	&lt;li&gt;Regression testing&lt;/li&gt;
	&lt;li&gt;Complex multi-step workflows&lt;/li&gt;
	&lt;li&gt;SOAP service testing&lt;/li&gt;
	&lt;li&gt;Mocking and service virtualization&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;SoapUI has been a major API testing tool for many years and remains particularly relevant in enterprise environments. Its strongest differentiator is deep support for SOAP and WSDL-based services while also supporting REST and other API technologies.&lt;/p&gt;

&lt;p&gt;It provides capabilities beyond simply sending HTTP requests. Test cases can contain multiple steps, assertions, data handling, scripting, and workflow logic.&lt;/p&gt;

&lt;p&gt;For organizations working primarily with modern REST APIs, the interface may feel heavier than newer tools. However, for organizations supporting legacy enterprise integrations, financial systems, telecom systems, or large SOAP environments, SoapUI remains highly relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Strong choice for enterprise environments, particularly where SOAP is still an important part of the architecture.&lt;/p&gt;

&lt;h2&gt;5. REST Assured&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://rest-assured.io/" target="_blank"&gt;https://rest-assured.io/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Developers building automated API tests directly in Java code.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;REST Assured is most valuable during automated testing and CI/CD integration.&lt;/p&gt;

&lt;p&gt;Unlike graphical API clients, REST Assured allows API tests to become part of the application's source code and automated test suite.&lt;/p&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;REST Assured is a Java library designed specifically for testing REST APIs. Its fluent syntax makes API tests relatively easy to read.&lt;/p&gt;

&lt;pre&gt;

given()
.header("Authorization", "Bearer token")
.when()
.get("/users/123")
.then()
.statusCode(200)
.body("name", equalTo("John")); &lt;/pre&gt;

&lt;p&gt;The major advantage of REST Assured is that developers can apply normal software engineering practices to API tests. Tests can be version-controlled, refactored, reviewed, and executed alongside unit and integration tests.&lt;/p&gt;

&lt;p&gt;Its biggest limitation is accessibility. Non-technical QA users may find a graphical tool easier than writing Java code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Excellent for Java engineering teams that want API testing tightly integrated into their automated test suites.&lt;/p&gt;

&lt;h2&gt;6. Karate&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://docs.karatelabs.io/" target="_blank"&gt;https://docs.karatelabs.io/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Behavior-driven API testing and teams that want readable automated tests without writing large amounts of traditional programming code.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Karate is primarily useful for:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Automated functional testing&lt;/li&gt;
	&lt;li&gt;Regression testing&lt;/li&gt;
	&lt;li&gt;Integration testing&lt;/li&gt;
	&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Karate uses a readable, behavior-driven syntax that makes API tests understandable by both developers and QA professionals.&lt;/p&gt;

&lt;p&gt;A test might describe an API interaction in a format closer to natural language than traditional code. This can improve collaboration between technical and QA teams.&lt;/p&gt;

&lt;p&gt;Karate is especially useful when API testing becomes a significant part of an automated quality assurance strategy. It provides a balance between graphical testing tools and fully code-based frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; A good choice for teams that want maintainable, readable automated API tests using a behavior-driven approach.&lt;/p&gt;

&lt;h2&gt;7. Apache JMeter&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://jmeter.apache.org/" target="_blank"&gt;https://jmeter.apache.org/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Load testing, stress testing, and performance testing APIs.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;JMeter should generally be introduced after functional testing has established that the API behaves correctly.&lt;/p&gt;

&lt;p&gt;Typical questions JMeter can help answer include:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Can the API handle 1,000 concurrent users?&lt;/li&gt;
	&lt;li&gt;How does response time change under load?&lt;/li&gt;
	&lt;li&gt;Where does the system begin to fail?&lt;/li&gt;
	&lt;li&gt;How many requests per second can the API sustain?&lt;/li&gt;
	&lt;li&gt;Does performance degrade during extended usage?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Apache JMeter is one of the most established open-source performance testing tools. It can simulate significant workloads and provides detailed controls for designing test scenarios.&lt;/p&gt;

&lt;p&gt;Its flexibility is also one of its challenges. Complex JMeter test plans can become difficult to maintain, and the graphical interface can feel intimidating to developers unfamiliar with performance testing concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; A strong choice for dedicated performance testing, especially for teams already familiar with traditional QA and load-testing workflows.&lt;/p&gt;

&lt;h2&gt;8. k6&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://k6.io/" target="_blank"&gt;https://k6.io/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Developer-friendly API performance testing and automated performance testing in CI/CD pipelines.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;k6 is particularly valuable during:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Performance testing&lt;/li&gt;
	&lt;li&gt;Pre-release validation&lt;/li&gt;
	&lt;li&gt;CI/CD performance regression testing&lt;/li&gt;
	&lt;li&gt;Capacity planning&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;k6 approaches performance testing with a developer-centric philosophy. Tests are written as scripts, making them easier to version-control and integrate into automated pipelines.&lt;/p&gt;

&lt;p&gt;This makes k6 particularly attractive for DevOps and platform engineering teams that want performance testing to become part of the software delivery process rather than a separate manual QA activity.&lt;/p&gt;

&lt;p&gt;For example, a CI/CD pipeline could automatically reject a release if API response times exceed an established threshold under a predefined workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; One of the strongest choices for teams adopting "performance testing as code."&lt;/p&gt;

&lt;h2&gt;9. Katalon&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://katalon.com/" target="_blank"&gt;https://katalon.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;QA teams that need to test APIs alongside web and mobile applications.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Katalon fits particularly well into a broader automated testing strategy where APIs are only one component of the application.&lt;/p&gt;

&lt;p&gt;It can be used for:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;API functional testing&lt;/li&gt;
	&lt;li&gt;Automated regression testing&lt;/li&gt;
	&lt;li&gt;End-to-end testing&lt;/li&gt;
	&lt;li&gt;API and UI integration testing&lt;/li&gt;
	&lt;li&gt;CI/CD automation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Katalon's primary advantage is that it provides a unified testing platform. Rather than maintaining separate frameworks for API testing, browser testing, and mobile testing, teams can consolidate multiple testing activities.&lt;/p&gt;

&lt;p&gt;Its low-code capabilities can also make automated testing more accessible to QA professionals who are not full-time software developers.&lt;/p&gt;

&lt;p&gt;The tradeoff is that specialized developers may prefer lighter tools focused exclusively on APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Particularly useful for QA organizations that need API testing to be part of a larger end-to-end automation strategy.&lt;/p&gt;

&lt;h2&gt;10. OWASP ZAP&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.zaproxy.org/" target="_blank"&gt;https://www.zaproxy.org/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Security testing APIs and identifying common security vulnerabilities.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Security testing should not be reserved for the final stage before production. Ideally, automated security testing should be incorporated into development and CI/CD processes.&lt;/p&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;OWASP ZAP is an open-source security testing tool that can help identify common vulnerabilities in web applications and APIs.&lt;/p&gt;

&lt;p&gt;It is particularly useful for detecting issues related to insecure configurations, authentication, exposed endpoints, and other common security weaknesses.&lt;/p&gt;

&lt;p&gt;However, automated security scanners should not be considered a replacement for professional security testing. They are excellent for identifying known patterns and common vulnerabilities but cannot understand every business-specific security risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; A valuable addition to an API security testing strategy, especially when integrated into automated pipelines.&lt;/p&gt;

&lt;h2&gt;11. Datadog Synthetic Monitoring&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.datadoghq.com/product/synthetic-monitoring/" target="_blank"&gt;https://www.datadoghq.com/product/synthetic-monitoring/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Continuously testing production APIs to verify availability, functionality, response times, and critical workflows from outside the application.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Datadog Synthetic Monitoring fits primarily into the &lt;strong&gt;production monitoring and operations stage&lt;/strong&gt; of the API lifecycle.&lt;/p&gt;

&lt;p&gt;Unlike traditional API testing tools that are primarily used during development or before deployment, synthetic monitoring continuously tests an API after it has been deployed.&lt;/p&gt;

&lt;p&gt;A typical production monitoring workflow might involve running automated tests every few minutes against critical API endpoints. These tests can validate much more than simple availability.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Is the API endpoint reachable?&lt;/li&gt;
	&lt;li&gt;Is the API returning the expected HTTP status code?&lt;/li&gt;
	&lt;li&gt;Is the response time within an acceptable threshold?&lt;/li&gt;
	&lt;li&gt;Does the response contain the expected data?&lt;/li&gt;
	&lt;li&gt;Is authentication functioning correctly?&lt;/li&gt;
	&lt;li&gt;Are critical multi-step API workflows functioning?&lt;/li&gt;
	&lt;li&gt;Is the API behaving correctly from multiple geographic locations?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;Datadog Synthetic Monitoring is a strong choice for organizations that want to move beyond traditional infrastructure monitoring and actively test whether their APIs are functioning correctly from the perspective of an external consumer.&lt;/p&gt;

&lt;p&gt;This distinction is important. Traditional infrastructure monitoring might tell you that a server is running, CPU utilization is normal, and an application process is healthy. However, none of those signals necessarily guarantee that an API consumer can successfully make a request and receive the expected result.&lt;/p&gt;

&lt;p&gt;Synthetic API tests solve this problem by simulating real API requests on a scheduled basis. Tests can validate status codes, response times, headers, response bodies, and other expected behavior.&lt;/p&gt;

&lt;p&gt;Datadog also supports more complex multistep API tests. This is useful when validating workflows rather than isolated endpoints. For example, a synthetic test could authenticate a user, retrieve an access token, call a protected endpoint, and validate the resulting response.&lt;/p&gt;

&lt;p&gt;Another major advantage is integration with the broader Datadog observability platform. When a synthetic test detects a failure, teams can correlate that failure with infrastructure metrics, application logs, traces, and other monitoring data to help identify the underlying cause.&lt;/p&gt;

&lt;p&gt;Datadog Synthetic Monitoring is also useful for APIs with customers distributed geographically. A service may be functioning correctly from the same cloud region where it is hosted while experiencing connectivity or latency problems for customers in another region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; An excellent choice for production API monitoring, particularly for teams already using Datadog for infrastructure, logging, APM, and observability.&lt;/p&gt;

&lt;h2&gt;12. New Relic Synthetic Monitoring&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://newrelic.com/platform/synthetics" target="_blank"&gt;https://newrelic.com/platform/synthetics&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Proactively monitoring API availability and functionality from public or private locations.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;New Relic Synthetic Monitoring belongs primarily in the &lt;strong&gt;production monitoring stage&lt;/strong&gt;, although it can also be useful for validating staging and pre-production environments.&lt;/p&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;New Relic's synthetic monitoring capabilities provide another strong option for continuously testing applications and API endpoints. API tests can perform scripted HTTP requests and validate whether endpoints are functioning correctly over time.&lt;/p&gt;

&lt;p&gt;One of the key benefits of synthetic monitoring is that it can detect problems even when an API is not receiving significant real-world traffic. Traditional application monitoring depends heavily on observing actual requests. Synthetic monitoring creates its own traffic, ensuring that critical API functionality is tested continuously.&lt;/p&gt;

&lt;p&gt;New Relic supports different types of synthetic monitors, ranging from simple availability checks to more sophisticated scripted API tests. Monitoring can also be performed from private locations for applications that are not publicly accessible.&lt;/p&gt;

&lt;p&gt;This makes it particularly useful for organizations that operate APIs inside private networks or need to validate internal services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; A strong alternative for organizations using New Relic as their primary observability platform and wanting synthetic API monitoring integrated with their existing telemetry.&lt;/p&gt;

&lt;h2&gt;13. Postman Monitors&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.postman.com/product/monitors/" target="_blank"&gt;https://www.postman.com/product/monitors/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Best For&lt;/h3&gt;

&lt;p&gt;Teams that already use Postman for API testing and want to continuously run their existing API collections against staging or production environments.&lt;/p&gt;

&lt;h3&gt;Where It Fits in the API Lifecycle&lt;/h3&gt;

&lt;p&gt;Postman Monitors provide an interesting bridge between &lt;strong&gt;API testing and production monitoring&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They can be used after deployment to continuously execute existing Postman collections on a schedule.&lt;/p&gt;

&lt;h3&gt;Review&lt;/h3&gt;

&lt;p&gt;One of the biggest advantages of Postman Monitors is reuse. Teams that have already created functional API tests in Postman do not necessarily need to recreate those tests in another monitoring platform.&lt;/p&gt;

&lt;p&gt;A Postman collection containing requests, assertions, authentication workflows, and response validation can be scheduled to run continuously.&lt;/p&gt;

&lt;p&gt;This creates a natural progression through the API lifecycle:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;A developer manually tests an endpoint using Postman.&lt;/li&gt;
	&lt;li&gt;The request becomes part of a collection.&lt;/li&gt;
	&lt;li&gt;Assertions are added to validate expected behavior.&lt;/li&gt;
	&lt;li&gt;The collection becomes part of automated regression testing.&lt;/li&gt;
	&lt;li&gt;The same collection can be monitored continuously after deployment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Postman Monitors can also validate complete workflows by chaining multiple requests together. This is useful for APIs where simply checking that an endpoint returns a &lt;code&gt;200 OK&lt;/code&gt; response is not sufficient.&lt;/p&gt;

&lt;p&gt;For example, a monitor could authenticate with an API, retrieve an access token, perform a search, retrieve a resource, and validate the returned data.&lt;/p&gt;

&lt;p&gt;The main limitation compared with a dedicated observability platform is that Postman is primarily an API development platform rather than a complete infrastructure and application observability solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; An excellent option for teams heavily invested in Postman that want to extend their existing API test collections into continuous monitoring.&lt;/p&gt;

&lt;h2&gt;Production Monitoring Is Not the Same as Uptime Monitoring&lt;/h2&gt;

&lt;p&gt;One important distinction when monitoring APIs in production is the difference between &lt;strong&gt;uptime monitoring&lt;/strong&gt; and &lt;strong&gt;synthetic API monitoring&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A basic uptime monitor might perform a request such as:&lt;/p&gt;

&lt;pre&gt;
GET /health
&lt;/pre&gt;

&lt;p&gt;And verify that the response is:&lt;/p&gt;

&lt;pre&gt;
HTTP 200 OK
&lt;/pre&gt;

&lt;p&gt;While useful, this does not necessarily prove that the API is functioning correctly for customers.&lt;/p&gt;

&lt;p&gt;Consider an API endpoint that returns:&lt;/p&gt;

&lt;pre&gt;
HTTP 200 OK

{
    "data": []
}
&lt;/pre&gt;

&lt;p&gt;The API might technically be online, but a database failure could be causing it to return incorrect or incomplete data.&lt;/p&gt;

&lt;p&gt;A properly designed synthetic API test should validate the actual business behavior of the API.&lt;/p&gt;

&lt;p&gt;For example, a production synthetic test might verify:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;The endpoint responds successfully.&lt;/li&gt;
	&lt;li&gt;The response time is below 500 milliseconds.&lt;/li&gt;
	&lt;li&gt;The expected response schema is returned.&lt;/li&gt;
	&lt;li&gt;Required properties are present.&lt;/li&gt;
	&lt;li&gt;The returned data contains expected values.&lt;/li&gt;
	&lt;li&gt;Authentication is functioning correctly.&lt;/li&gt;
	&lt;li&gt;Rate limiting behaves as expected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why synthetic monitoring should be considered a form of &lt;strong&gt;continuous API testing&lt;/strong&gt;, rather than simply uptime monitoring.&lt;/p&gt;

&lt;h2&gt;Recommended Production Monitoring Strategy&lt;/h2&gt;

&lt;p&gt;A mature API platform should consider monitoring multiple levels of functionality.&lt;/p&gt;

&lt;table border="1" cellpadding="8" cellspacing="0"&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th&gt;Monitoring Level&lt;/th&gt;
			&lt;th&gt;Example Test&lt;/th&gt;
			&lt;th&gt;Purpose&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;Availability&lt;/td&gt;
			&lt;td&gt;Check API health endpoint&lt;/td&gt;
			&lt;td&gt;Verify the service is reachable&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Endpoint Health&lt;/td&gt;
			&lt;td&gt;Call a critical API endpoint&lt;/td&gt;
			&lt;td&gt;Verify individual functionality&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Response Validation&lt;/td&gt;
			&lt;td&gt;Validate response schema and data&lt;/td&gt;
			&lt;td&gt;Detect incorrect responses&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Authentication&lt;/td&gt;
			&lt;td&gt;Authenticate and call protected endpoints&lt;/td&gt;
			&lt;td&gt;Verify security workflows&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Business Workflow&lt;/td&gt;
			&lt;td&gt;Execute multiple API requests in sequence&lt;/td&gt;
			&lt;td&gt;Validate critical customer journeys&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Performance&lt;/td&gt;
			&lt;td&gt;Validate response time thresholds&lt;/td&gt;
			&lt;td&gt;Detect degradation&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Geographic Availability&lt;/td&gt;
			&lt;td&gt;Run tests from multiple locations&lt;/td&gt;
			&lt;td&gt;Detect regional problems&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;Where Production Synthetic Monitoring Fits in the Complete API Lifecycle&lt;/h2&gt;

&lt;p&gt;Production monitoring completes the API testing lifecycle.&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Design:&lt;/strong&gt; Validate the API contract using OpenAPI and specification tools.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Development:&lt;/strong&gt; Manually test endpoints using tools such as Postman, Insomnia, or Bruno.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Functional Testing:&lt;/strong&gt; Validate API behavior and workflows.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Regression Testing:&lt;/strong&gt; Automatically test APIs when code changes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Performance Testing:&lt;/strong&gt; Test how APIs behave under load using tools such as k6 or JMeter.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Security Testing:&lt;/strong&gt; Scan APIs for vulnerabilities.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Deployment:&lt;/strong&gt; Release the API to production.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Production Synthetic Monitoring:&lt;/strong&gt; Continuously verify that the deployed API continues functioning correctly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This final stage is particularly important because deployment is not the end of testing.&lt;/p&gt;

&lt;p&gt;Infrastructure changes, certificate expiration, database problems, DNS issues, third-party service failures, configuration changes, and unexpected application regressions can all cause an API to fail after it has successfully passed pre-production testing.&lt;/p&gt;

&lt;p&gt;Synthetic monitoring provides an independent and continuous validation layer that answers a simple but critical question:&lt;/p&gt;

&lt;blockquote&gt;&lt;strong&gt;"If a customer tried to use our API right now, would it actually work?"&lt;/strong&gt;&lt;/blockquote&gt;

&lt;p&gt;Tools such as Datadog Synthetic Monitoring, New Relic Synthetic Monitoring, and Postman Monitors help API teams continuously answer that question.&lt;/p&gt;

&lt;h2&gt;When Should Each Tool Be Used?&lt;/h2&gt;

&lt;p&gt;The following is a practical way to think about API testing tools throughout the complete API development lifecycle. The important thing to remember is that API testing does not end when an API is deployed. Different tools address different risks at different stages.&lt;/p&gt;

&lt;h3&gt;Stage 1: API Design and Contract Validation&lt;/h3&gt;

&lt;p&gt;Before implementation begins, teams should validate the API contract and ensure that endpoints, request parameters, response models, authentication requirements, and error responses are clearly defined.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Postman&lt;/li&gt;
	&lt;li&gt;Swagger / OpenAPI tools&lt;/li&gt;
	&lt;li&gt;Stoplight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Ensure the API contract is clear, consistent, and agreed upon before developers begin implementation.&lt;/p&gt;

&lt;p&gt;At this stage, teams should focus on questions such as:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Are endpoint paths logically designed?&lt;/li&gt;
	&lt;li&gt;Are request and response schemas clearly defined?&lt;/li&gt;
	&lt;li&gt;Are HTTP status codes used consistently?&lt;/li&gt;
	&lt;li&gt;Are authentication requirements documented?&lt;/li&gt;
	&lt;li&gt;Are error responses standardized?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Stage 2: Local Development and Exploratory Testing&lt;/h3&gt;

&lt;p&gt;During development, developers need a quick way to send requests, inspect responses, troubleshoot authentication, and debug API behavior.&lt;/p&gt;

&lt;p&gt;This is the stage where interactive API clients are most valuable.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Postman&lt;/li&gt;
	&lt;li&gt;Insomnia&lt;/li&gt;
	&lt;li&gt;Bruno&lt;/li&gt;
	&lt;li&gt;HTTPie or curl&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Quickly verify that individual endpoints behave correctly while they are being developed.&lt;/p&gt;

&lt;p&gt;These tools are ideal for questions such as:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Does the endpoint return the expected status code?&lt;/li&gt;
	&lt;li&gt;Is authentication working?&lt;/li&gt;
	&lt;li&gt;Does the API return the expected JSON structure?&lt;/li&gt;
	&lt;li&gt;Are query parameters being processed correctly?&lt;/li&gt;
	&lt;li&gt;Are error responses working as expected?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Stage 3: Functional and Integration Testing&lt;/h3&gt;

&lt;p&gt;Once individual endpoints work correctly, the next step is validating complete API functionality and interactions between multiple services.&lt;/p&gt;

&lt;p&gt;At this stage, testing should move beyond isolated requests and begin validating workflows.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Postman Collections&lt;/li&gt;
	&lt;li&gt;SoapUI&lt;/li&gt;
	&lt;li&gt;REST Assured&lt;/li&gt;
	&lt;li&gt;Karate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Verify that API endpoints, services, databases, authentication systems, and dependent services work correctly together.&lt;/p&gt;

&lt;p&gt;Example workflow:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Authenticate with the API.&lt;/li&gt;
	&lt;li&gt;Retrieve an access token.&lt;/li&gt;
	&lt;li&gt;Call a protected endpoint.&lt;/li&gt;
	&lt;li&gt;Create or retrieve a resource.&lt;/li&gt;
	&lt;li&gt;Validate the response.&lt;/li&gt;
	&lt;li&gt;Verify the expected data was persisted or returned.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Stage 4: Automated Regression Testing&lt;/h3&gt;

&lt;p&gt;Every time an API changes, existing functionality should be tested automatically to detect unintended regressions.&lt;/p&gt;

&lt;p&gt;Manual testing alone becomes increasingly difficult as an API grows. Automated regression testing ensures that previously working endpoints continue to function after code, infrastructure, or dependency changes.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;REST Assured&lt;/li&gt;
	&lt;li&gt;Karate&lt;/li&gt;
	&lt;li&gt;Postman CLI&lt;/li&gt;
	&lt;li&gt;Bruno&lt;/li&gt;
	&lt;li&gt;Katalon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Automatically catch breaking changes before they reach production.&lt;/p&gt;

&lt;p&gt;Regression tests should validate:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Status codes&lt;/li&gt;
	&lt;li&gt;Response schemas&lt;/li&gt;
	&lt;li&gt;Required properties&lt;/li&gt;
	&lt;li&gt;Business logic&lt;/li&gt;
	&lt;li&gt;Authentication&lt;/li&gt;
	&lt;li&gt;Error handling&lt;/li&gt;
	&lt;li&gt;Backward compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Stage 5: Performance and Load Testing&lt;/h3&gt;

&lt;p&gt;Once functional correctness has been established, APIs should be tested under realistic workloads.&lt;/p&gt;

&lt;p&gt;An API may function perfectly when tested by a single developer but experience failures when thousands of concurrent clients begin making requests.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;k6&lt;/li&gt;
	&lt;li&gt;Apache JMeter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Understand how the API behaves under normal, peak, and extreme workloads.&lt;/p&gt;

&lt;p&gt;Performance testing can help answer questions such as:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;How many requests per second can the API handle?&lt;/li&gt;
	&lt;li&gt;How does response time change as traffic increases?&lt;/li&gt;
	&lt;li&gt;What happens when downstream services become slow?&lt;/li&gt;
	&lt;li&gt;Where is the application's performance bottleneck?&lt;/li&gt;
	&lt;li&gt;When does the API begin returning errors?&lt;/li&gt;
	&lt;li&gt;Can the infrastructure scale as expected?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Stage 6: Security Testing&lt;/h3&gt;

&lt;p&gt;APIs should be continuously evaluated for security vulnerabilities and configuration problems.&lt;/p&gt;

&lt;p&gt;Security testing should not be treated as a single activity performed immediately before release. Ideally, automated security checks should be integrated throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;OWASP ZAP&lt;/li&gt;
	&lt;li&gt;Specialized API security platforms (not reviewed in this article)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Identify security vulnerabilities before they can affect customers or expose sensitive data.&lt;/p&gt;

&lt;h3&gt;Stage 7: CI/CD Pipeline Testing&lt;/h3&gt;

&lt;p&gt;Automated API testing should become part of the software delivery process.&lt;/p&gt;

&lt;p&gt;Rather than relying on developers or QA engineers to remember to run tests manually, critical tests should execute automatically when code changes are committed or deployed.&lt;/p&gt;

&lt;p&gt;A mature CI/CD pipeline might execute:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Unit tests&lt;/li&gt;
	&lt;li&gt;API contract validation&lt;/li&gt;
	&lt;li&gt;Functional API tests&lt;/li&gt;
	&lt;li&gt;Integration tests&lt;/li&gt;
	&lt;li&gt;Regression tests&lt;/li&gt;
	&lt;li&gt;Security scans&lt;/li&gt;
	&lt;li&gt;Performance smoke tests&lt;/li&gt;
	&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;REST Assured&lt;/li&gt;
	&lt;li&gt;Karate&lt;/li&gt;
	&lt;li&gt;Postman CLI&lt;/li&gt;
	&lt;li&gt;Bruno&lt;/li&gt;
	&lt;li&gt;k6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Prevent defective API releases from reaching staging or production environments.&lt;/p&gt;

&lt;h3&gt;Stage 8: Production Monitoring and Continuous API Validation&lt;/h3&gt;

&lt;p&gt;Deployment should not be considered the end of the API testing lifecycle.&lt;/p&gt;

&lt;p&gt;Even after an API has successfully passed functional, regression, performance, and security testing, problems can still occur in production. Infrastructure changes, DNS failures, expired certificates, database problems, third-party dependency failures, configuration changes, and unexpected regressions can all affect a previously functioning API.&lt;/p&gt;

&lt;p&gt;Production synthetic monitoring provides a continuous layer of validation by actively executing API requests against the deployed production environment.&lt;/p&gt;

&lt;p&gt;Recommended tools:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Datadog Synthetic Monitoring&lt;/li&gt;
	&lt;li&gt;New Relic Synthetic Monitoring&lt;/li&gt;
	&lt;li&gt;Postman Monitors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; Continuously verify that customers can successfully use the API in the real production environment.&lt;/p&gt;

&lt;p&gt;Production monitoring should go beyond simply checking whether a server responds with &lt;code&gt;HTTP 200 OK&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Effective synthetic API tests can validate:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;API availability and reachability&lt;/li&gt;
	&lt;li&gt;Expected HTTP status codes&lt;/li&gt;
	&lt;li&gt;Response time thresholds&lt;/li&gt;
	&lt;li&gt;Response schemas&lt;/li&gt;
	&lt;li&gt;Required response properties&lt;/li&gt;
	&lt;li&gt;Expected data values&lt;/li&gt;
	&lt;li&gt;Authentication workflows&lt;/li&gt;
	&lt;li&gt;Critical multi-step API workflows&lt;/li&gt;
	&lt;li&gt;Geographic availability and latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, an API health check might confirm that a service is running:&lt;/p&gt;

&lt;pre&gt;
GET /health

HTTP 200 OK
&lt;/pre&gt;

&lt;p&gt;However, a synthetic production test can validate something much closer to an actual customer interaction:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Authenticate using valid API credentials.&lt;/li&gt;
	&lt;li&gt;Retrieve an access token.&lt;/li&gt;
	&lt;li&gt;Call a protected API endpoint.&lt;/li&gt;
	&lt;li&gt;Validate the response status.&lt;/li&gt;
	&lt;li&gt;Validate the response schema.&lt;/li&gt;
	&lt;li&gt;Verify that expected data is returned.&lt;/li&gt;
	&lt;li&gt;Confirm the response time is within an acceptable threshold.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This distinction is important because an API can appear healthy from an infrastructure perspective while still failing from a customer's perspective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production monitoring closes the API testing lifecycle loop.&lt;/strong&gt; Pre-production testing asks, &lt;em&gt;"Will this API work when deployed?"&lt;/em&gt; Production synthetic monitoring continuously asks, &lt;em&gt;"Is this API working right now for our customers?"&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;The Complete API Testing Lifecycle&lt;/h2&gt;

&lt;p&gt;When viewed as a complete lifecycle, API testing becomes a continuous process rather than a single QA activity.&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Design:&lt;/strong&gt; Define and validate the API contract.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Development:&lt;/strong&gt; Manually test and debug individual endpoints.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Functional Testing:&lt;/strong&gt; Validate API functionality and workflows.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Regression Testing:&lt;/strong&gt; Automatically detect breaking changes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Performance Testing:&lt;/strong&gt; Validate behavior under load.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Security Testing:&lt;/strong&gt; Identify vulnerabilities and security weaknesses.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;CI/CD Testing:&lt;/strong&gt; Automatically validate releases before deployment.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Production Monitoring:&lt;/strong&gt; Continuously validate the deployed API from the customer's perspective.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The lifecycle does not truly have an endpoint. Production monitoring can identify issues that lead to new tests, fixes, and improvements, feeding information back into the development process.&lt;/p&gt;

&lt;p&gt;This creates a continuous quality loop:&lt;/p&gt;

&lt;blockquote&gt;Design → Develop → Test → Deploy → Monitor → Improve&lt;/blockquote&gt;

&lt;p&gt;Ultimately, the best API teams do not ask, &lt;em&gt;"Which is the best API testing tool?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They ask:&lt;/p&gt;

&lt;blockquote&gt;&lt;strong&gt;"What type of risk are we trying to detect, and what is the best tool to detect it?"&lt;/strong&gt;&lt;/blockquote&gt;

&lt;p&gt;Answering that question at every stage of the API lifecycle leads to a more reliable, secure, and maintainable API.&lt;/p&gt;
</description><guid isPermaLink="false">36</guid></item><item><title>Why API Testing Is Not Optional (And What You Should Be Doing About It)</title><link>https://www.metadapi.com/Blog/PostId/34/why-api-testing-is-not-optional</link><category>Developer Solutions</category><pubDate>Fri, 01 May 2026 00:03:33 GMT</pubDate><description>&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;APIs sit at the center of modern software. Whether you're building a SaaS platform, a mobile app backend, or a data product, the API is the contract your system exposes to the world. If that contract breaks, everything built on top of it breaks too.&lt;/p&gt;

&lt;p&gt;That’s why API testing isn’t just a “nice-to-have”—it’s a foundational part of delivering reliable software.&lt;/p&gt;

&lt;h2&gt;The Real Reason APIs Need Testing&lt;/h2&gt;

&lt;p&gt;At a glance, an API might look simple: a few endpoints, some JSON responses, maybe authentication. But under the hood, APIs coordinate multiple moving parts:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Databases&lt;/li&gt;
	&lt;li&gt;External services&lt;/li&gt;
	&lt;li&gt;Business logic&lt;/li&gt;
	&lt;li&gt;Caching layers&lt;/li&gt;
	&lt;li&gt;Authentication/authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even small changes can introduce subtle failures:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;A field gets renamed → clients break&lt;/li&gt;
	&lt;li&gt;A query slows down → performance degrades&lt;/li&gt;
	&lt;li&gt;A dependency fails → cascading errors&lt;/li&gt;
	&lt;li&gt;Edge cases return incorrect data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without testing, these issues often show up &lt;strong&gt;after deployment&lt;/strong&gt;, when your users are the ones discovering them. &lt;/p&gt;

&lt;p&gt;API testing gives you confidence that:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Your endpoints behave as expected&lt;/li&gt;
	&lt;li&gt;Your system performs under load&lt;/li&gt;
	&lt;li&gt;Your integrations don’t silently fail&lt;/li&gt;
	&lt;li&gt;Your changes don’t introduce regressions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Types of API Testing You Should Be Doing&lt;/h2&gt;

&lt;p&gt;Good API testing isn’t just one thing—it’s a combination of different testing strategies that cover correctness, reliability, and scalability. Let's go over the different types of testing you should be doing:&lt;/p&gt;

&lt;h3&gt;1. Functional Testing (Does it work?)&lt;/h3&gt;

&lt;p&gt;This is the baseline. Functional testing verifies that:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Endpoints return the correct status codes&lt;/li&gt;
	&lt;li&gt;Responses match expected schemas&lt;/li&gt;
	&lt;li&gt;Business logic behaves correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;An API endpoint can receive country code as a parameter. What happens if the parameter is not included ? What happens if the country code is invalid?  Does the response format change for different countries ? &lt;/p&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Functional testing&lt;/strong&gt; ensures your API does what it &lt;strong&gt;claims&lt;/strong&gt; to do.&lt;/p&gt;

&lt;h3&gt;2. Integration Testing (Do systems work together?)&lt;/h3&gt;

&lt;p&gt;APIs rarely operate in isolation. Integration tests validate:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Database interactions&lt;/li&gt;
	&lt;li&gt;Third-party API calls&lt;/li&gt;
	&lt;li&gt;Messaging systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Your API sends a log to a logging service. When the API is called/executed, does the message get to the 3rd party logging service ? is the message in the right format? If there is a connection error does the API break?&lt;/p&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Integration testing&lt;/strong&gt; ensures your system works end-to-end, not just in isolation.&lt;/p&gt;

&lt;h3&gt;3. Performance Testing (How fast is it?)&lt;/h3&gt;

&lt;p&gt;Performance testing evaluates:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Response times&lt;/li&gt;
	&lt;li&gt;Throughput (requests per second)&lt;/li&gt;
	&lt;li&gt;Latency under normal load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Can your API handle 500 requests per second with &lt;200ms response time? &lt;/p&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Performance testing&lt;/strong&gt; ensures a smooth user experience under expected usage.&lt;/p&gt;

&lt;h3&gt;4. Stress Testing (What happens when things break?)&lt;/h3&gt;

&lt;p&gt;Stress testing pushes your API beyond normal limits:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Traffic spikes&lt;/li&gt;
	&lt;li&gt;Resource exhaustion&lt;/li&gt;
	&lt;li&gt;Unexpected load patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;What happens at 10x normal traffic? Does your API degrade gracefully or crash? Is there a limit in the number of request the API can take ? &lt;/p&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Stress testing&lt;/strong&gt; helps you understand failure boundaries.&lt;/p&gt;

&lt;h3&gt;5. Load Testing (Can it scale?)&lt;/h3&gt;

&lt;p&gt;Often confused with performance testing, load testing focuses on:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Sustained traffic over time&lt;/li&gt;
	&lt;li&gt;Scalability under realistic conditions&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;What happens when 100 requests per second hit the API? 1K ? 1M ? &lt;/div&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Load testing&lt;/strong&gt; ensures your system holds up during real-world usage (not just bursts).&lt;/p&gt;

&lt;h3&gt;6. Security Testing (Is it safe?)&lt;/h3&gt;

&lt;p&gt;APIs are common attack surfaces. Security testing checks:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Authentication &amp; authorization&lt;/li&gt;
	&lt;li&gt;Rate limiting&lt;/li&gt;
	&lt;li&gt;Injection vulnerabilities&lt;/li&gt;
	&lt;li&gt;Data exposure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Security testing&lt;/strong&gt; protects both your system and your users.&lt;/p&gt;

&lt;h3&gt;7. Regression Testing (Did you break something?)&lt;/h3&gt;

&lt;p&gt;Every change introduces risk. Regression testing ensures:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Existing functionality still works&lt;/li&gt;
	&lt;li&gt;New features don’t break old ones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&#128073; &lt;strong&gt;Regression testing&lt;/strong&gt; is critical for maintaining stability as your API evolves.&lt;/p&gt;

&lt;hr /&gt;
&lt;h2&gt;Building a Practical API Testing Strategy&lt;/h2&gt;

&lt;p&gt;A solid approach doesn’t require dozens of tools—it requires the right combination. In a future article we'll evaluate different testing tools to help build either the minimal must-have testing environment or an enterprise grade testing suite for complex use cases.&lt;/p&gt;

&lt;p&gt;The key to testing success is consistency. Testing should happen:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;During development&lt;/li&gt;
	&lt;li&gt;Before deployment&lt;/li&gt;
	&lt;li&gt;After changes&lt;/li&gt;
	&lt;li&gt;Continuously in production monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Final Thoughts&lt;/h2&gt;

&lt;p&gt;APIs are products. And like any product, quality defines success.&lt;/p&gt;

&lt;blockquote class="with-borders"&gt;
    &lt;p&gt;
        Without testing, you’re &lt;strong&gt;guessing&lt;/strong&gt;.
    &lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote class="with-borders"&gt;
    &lt;p&gt;
        With testing, you’re engineering &lt;strong&gt;confidence&lt;/strong&gt;.
    &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The difference shows up in:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Fewer production issues&lt;/li&gt;
	&lt;li&gt;Faster development cycles&lt;/li&gt;
	&lt;li&gt;Better user trust&lt;/li&gt;
	&lt;li&gt;More scalable systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your API is critical to your business (and it probably is), then investing in a proper testing strategy isn’t overhead—it’s leverage.&lt;/p&gt;
</description><guid isPermaLink="false">34</guid></item><item><title>New Distance Between ZIP Code and Coordinates Endpoint</title><link>https://www.metadapi.com/Blog/PostId/33/new-distance-between-zip-code-and-coordinates-endpoint</link><category>Product Notifications</category><pubDate>Mon, 13 Apr 2026 21:31:39 GMT</pubDate><description>&lt;h2&gt;&#128640; Introducing the New Distance Between ZIP Code and Coordinates Endpoint&lt;/h2&gt;

&lt;p&gt;We’re excited to announce a powerful new addition to the &lt;strong&gt;Zip Code API v2&lt;/strong&gt;: the &lt;strong&gt;Distance Between ZIP Code and Latitude/Longitude Coordinates&lt;/strong&gt; endpoint.&lt;/p&gt;

&lt;p&gt;This new capability expands the API’s geospatial intelligence by enabling developers to calculate distances not just between ZIP codes—but between a ZIP code and &lt;strong&gt;any geographic point on Earth&lt;/strong&gt;.&lt;/p&gt;

&lt;hr /&gt;
&lt;h2&gt;&#128205; What This Endpoint Does&lt;/h2&gt;

&lt;p&gt;The new endpoint:&lt;/p&gt;

&lt;p&gt;&lt;span class="badge badge-success"&gt;GET&lt;/span&gt;&lt;span class="badge badge-dark"&gt;/zipc/v2/distancecoord&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;allows you to calculate the geographic distance between:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;A &lt;strong&gt;U.S. ZIP Code&lt;/strong&gt;, and&lt;/li&gt;
	&lt;li&gt;A pair of &lt;strong&gt;latitude and longitude coordinates&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easy to bridge traditional postal geography with real-world geospatial coordinates.&lt;/p&gt;

&lt;h3&gt;Key Capabilities&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Returns distance in &lt;strong&gt;miles and kilometers&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Accepts &lt;strong&gt;any valid latitude/longitude pair&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Uses precise geographic calculations for accurate results&lt;/li&gt;
	&lt;li&gt;Fully integrated into the Zip Code API v2 ecosystem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This endpoint complements the existing `/distance` endpoint (ZIP-to-ZIP) by enabling &lt;strong&gt;ZIP-to-point distance calculations&lt;/strong&gt;, significantly expanding use cases. &lt;/p&gt;

&lt;h2&gt;&#128161; Why This Matters&lt;/h2&gt;

&lt;p&gt;Traditionally, developers had to:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Convert ZIP codes into coordinates&lt;/li&gt;
	&lt;li&gt;Apply formulas like Haversine manually&lt;/li&gt;
	&lt;li&gt;Handle edge cases and accuracy issues&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, this endpoint simplifies everything into a &lt;strong&gt;single API call&lt;/strong&gt;, eliminating the need for custom geospatial logic.&lt;/p&gt;

&lt;h2&gt;&#129504; Sample Use Cases&lt;/h2&gt;

&lt;p&gt;Here are some practical ways to leverage this new endpoint:&lt;/p&gt;

&lt;h3&gt;1. &#128230; Logistics &amp; Delivery Optimization&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Calculate distance from a warehouse (ZIP code) to a delivery location (coordinates)&lt;/li&gt;
	&lt;li&gt;Assign nearest distribution center dynamically&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;2. &#128205; Location-Based Services&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Determine proximity of a user’s GPS location to a service area defined by ZIP code&lt;/li&gt;
	&lt;li&gt;Power “nearest location” features in apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3. &#127919; Geo-Targeted Marketing&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Match user coordinates to ZIP-based demographic datasets (IRS, Census)&lt;/li&gt;
	&lt;li&gt;Deliver hyper-local campaigns based on proximity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;4. &#127973; Emergency &amp; Field Services&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Route emergency responders based on distance from ZIP-based facilities&lt;/li&gt;
	&lt;li&gt;Optimize technician dispatching&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;5. &#127970; Site Selection &amp; Analytics&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Analyze how far a given coordinate is from key ZIP-based markets&lt;/li&gt;
	&lt;li&gt;Support retail expansion planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Distance calculations are a foundational capability for many applications like routing, logistics, and geo-targeting.&lt;/p&gt;

&lt;h2&gt;&#128295; Sample Request&lt;/h2&gt;

&lt;p&gt;GET https://global.metadapi.com/zipc/v2/distancecoord?zipcode=90210&amp;latitude=34.0522&amp;longitude=-118.2437&lt;/p&gt;

&lt;h3&gt;Sample Response (Simplified)&lt;/h3&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;{&lt;br /&gt;
  "data": [&lt;br /&gt;
    {&lt;br /&gt;
      "zipCode": "90210",&lt;br /&gt;
      "latitude": 34.0901,&lt;br /&gt;
      "longitude": -118.4065,&lt;br /&gt;
      "distanceMiles": 10.23,&lt;br /&gt;
      "distanceKilometers": 16.46&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;/div&gt;

&lt;h2&gt;&#128279; How It Fits in Zip Code API v2&lt;/h2&gt;

&lt;p&gt;The **&lt;strong&gt;Zip Code API v2&lt;/strong&gt;** provides a full suite of location intelligence endpoints, including:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;ZIP code lookup&lt;/li&gt;
	&lt;li&gt;Search &amp; filtering&lt;/li&gt;
	&lt;li&gt;ZIP-to-ZIP distance&lt;/li&gt;
	&lt;li&gt;Radius-based queries&lt;/li&gt;
	&lt;li&gt;IRS income statistics&lt;/li&gt;
	&lt;li&gt;MSA (Metropolitan Statistical Area) data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The new `/distancecoord` endpoint enhances this ecosystem by connecting &lt;strong&gt;ZIP-based data with real-world coordinate systems&lt;/strong&gt;, making the API even more versatile for modern applications.&lt;/p&gt;

&lt;h2&gt; &#129517; Final Thoughts&lt;/h2&gt;

&lt;p&gt;With the introduction of the &lt;strong&gt;Distance Between ZIP Code and Coordinates&lt;/strong&gt; endpoint, developers can now seamlessly combine:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Postal geography (ZIP codes)&lt;/li&gt;
	&lt;li&gt;GPS-based location data (lat/long)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…all within a single API.&lt;/p&gt;

&lt;p&gt;Whether you're building logistics platforms, analytics tools, or location-aware applications, this endpoint unlocks a new layer of geospatial capability—without the complexity.&lt;/p&gt;

&lt;p&gt;&#128073; Start using it today as part of &lt;a href="/API-Directory/Zip-Code-API"&gt;Zip Code API v2&lt;/a&gt; and bring precision location intelligence into your applications. Check the endpoint &lt;a href="https://metadapi.stoplight.io/docs/api/xhtnf2acb1sml-distance-between-zip-code-and-lat-long-coordinates" target="_blank"&gt;documentation&lt;/a&gt;. &lt;br /&gt;
 &lt;/p&gt;
</description><guid isPermaLink="false">33</guid></item><item><title>Famous ZIP Codes in the United States: What a ZIP Code Is and Why It Exists</title><link>https://www.metadapi.com/Blog/PostId/31/famous-zip-codes-in-the-united-states-what-a-zip-code-is-and-why-it-exists</link><category>About the Data</category><pubDate>Fri, 20 Feb 2026 01:14:25 GMT</pubDate><description>&lt;h2&gt;What Is a ZIP Code?&lt;/h2&gt;

&lt;p&gt;A ZIP Code is a postal code used in the United States to identify specific geographic delivery areas. The term ZIP stands for Zone Improvement Plan, a system introduced by the United States Postal Service (USPS) in 1963 to improve the speed and accuracy of mail delivery.&lt;/p&gt;

&lt;p&gt;A standard ZIP Code contains five digits:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;The first digit represents a group of U.S. states or a large region.&lt;/li&gt;
	&lt;li&gt;The next two digits identify a sectional center facility (a mail sorting hub).&lt;/li&gt;
	&lt;li&gt;The last two digits represent a local delivery area.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Later, the &lt;strong&gt;ZIP+4&lt;/strong&gt; system was introduced to provide even more precise delivery locations, such as specific buildings or city blocks.&lt;/p&gt;

&lt;h2&gt;Why ZIP Codes Were Created&lt;/h2&gt;

&lt;p&gt;Before ZIP Codes, mail sorting was largely manual and time-consuming. As the U.S. population and mail volume grew—especially after World War II—the postal system needed a way to automate and standardize delivery routes.&lt;/p&gt;

&lt;p&gt;ZIP Codes were created to:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Speed up mail processing&lt;/li&gt;
	&lt;li&gt;Reduce delivery errors&lt;/li&gt;
	&lt;li&gt;Enable automated sorting&lt;/li&gt;
	&lt;li&gt;Improve logistics planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, ZIP Codes are used for far more than mail delivery. Businesses use them for:&lt;/p&gt;

&lt;p&gt;Market research and demographic analysis&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Targeted marketing and advertising&lt;/li&gt;
	&lt;li&gt;Territory planning and logistics&lt;/li&gt;
	&lt;li&gt;Insurance and risk modeling&lt;/li&gt;
	&lt;li&gt;Real estate analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because ZIP Codes are tied to geography and population patterns, they have become one of the most widely used geographic identifiers in the United States.&lt;/p&gt;

&lt;h2&gt;The Most Famous ZIP Codes in Each U.S. State&lt;/h2&gt;

&lt;p&gt;Below is a curated list of well-known ZIP Codes in each state and why they are notable. Fame may come from tourism, economic importance, pop culture, or historical significance.&lt;/p&gt;

&lt;h3&gt;Alabama — 35203 (Birmingham)&lt;/h3&gt;

&lt;p&gt;Downtown Birmingham’s historic business district and civil rights landmarks are located in this ZIP Code. Check out some details of &lt;a href="https://www.metadapi.com/us-zip-codes/35203"&gt;zip code 35203&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Alaska — 99501 (Anchorage)&lt;/h3&gt;

&lt;p&gt;Covers downtown Anchorage, the economic and transportation hub of Alaska. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/99501"&gt;zip code 99501&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Arizona — 85001 (Phoenix)&lt;/h3&gt;

&lt;p&gt;One of the most recognized ZIP Codes in Arizona, covering the state capital’s downtown core. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/85001"&gt;zip code 85001&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Arkansas — 72201 (Little Rock)&lt;/h3&gt;

&lt;p&gt;Home to downtown Little Rock and major government buildings. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/72201"&gt;zip code 72201&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;California — 90210 (Beverly Hills)&lt;/h3&gt;

&lt;p&gt;Arguably the most famous ZIP Code in the world, associated with wealth, celebrity culture, and the television series Beverly Hills, 90210. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/90210"&gt;zip code 90210&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Colorado — 80202 (Denver)&lt;/h3&gt;

&lt;p&gt;Known for downtown Denver’s business district and major sports venues. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/80202"&gt;zip code 80202&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Connecticut — 06830 (Greenwich)&lt;/h3&gt;

&lt;p&gt;A nationally recognized area known for affluence and hedge fund headquarters. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/06830"&gt;zip code 06830&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Delaware — 19801 (Wilmington)&lt;/h3&gt;

&lt;p&gt;A major financial and corporate center. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/19801"&gt;zip code 19801&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Florida — 33109 (Miami Beach / Fisher Island)&lt;/h3&gt;

&lt;p&gt;One of the wealthiest ZIP Codes in the United States and known for luxury real estate. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/33109"&gt;zip code 33109&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Georgia — 30303 (Atlanta)&lt;/h3&gt;

&lt;p&gt;Downtown Atlanta and the city’s historic commercial center. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/30303"&gt;zip code 30303&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Hawaii — 96815 (Waikiki)&lt;/h3&gt;

&lt;p&gt;Globally recognized tourist destination and beachfront district. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/96815"&gt;zip code 96815&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Idaho — 83702 (Boise)&lt;/h3&gt;

&lt;p&gt;Downtown Boise and the state capitol area. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/83702"&gt;zip code 83702&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Illinois — 60611 (Chicago)&lt;/h3&gt;

&lt;p&gt;Home to the Magnificent Mile and luxury retail districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/60611"&gt;zip code 60611&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Indiana — 46204 (Indianapolis)&lt;/h3&gt;

&lt;p&gt;Includes Monument Circle and major sports venues. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/46204"&gt;zip code 46204&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Iowa — 50309 (Des Moines)&lt;/h3&gt;

&lt;p&gt;Downtown Des Moines and government offices. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/50309"&gt;zip code 50309&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Kansas — 66101 (Kansas City, KS)&lt;/h3&gt;

&lt;p&gt;Historic downtown and industrial areas near major rail routes. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/66101"&gt;zip code 66101&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Kentucky — 40202 (Louisville)&lt;/h3&gt;

&lt;p&gt;Downtown Louisville and waterfront redevelopment districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/40202"&gt;zip code 40202&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Louisiana — 70116 (New Orleans)&lt;/h3&gt;

&lt;p&gt;Covers the French Quarter and Bourbon Street, famous worldwide. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/70116"&gt;zip code 70116&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Maine — 04101 (Portland)&lt;/h3&gt;

&lt;p&gt;Historic waterfront and tourism center. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/04101"&gt;zip code 04101&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Maryland — 20814 (Bethesda)&lt;/h3&gt;

&lt;p&gt;Known for healthcare institutions and proximity to Washington, D.C. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/20814"&gt;zip code 20814&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Massachusetts — 02108 (Boston)&lt;/h3&gt;

&lt;p&gt;Beacon Hill, one of the oldest and most historic neighborhoods in the U.S. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/02108"&gt;zip code 02108&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Michigan — 48226 (Detroit)&lt;/h3&gt;

&lt;p&gt;Downtown Detroit and historic financial district. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/48226"&gt;zip code 48226&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Minnesota — 55401 (Minneapolis)&lt;/h3&gt;

&lt;p&gt;Central business district and sports venues. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/55401"&gt;zip code 55401&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Mississippi — 39201 (Jackson)&lt;/h3&gt;

&lt;p&gt;Downtown Jackson and government buildings. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/39201"&gt;zip code 39201&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Missouri — 63102 (St. Louis)&lt;/h3&gt;

&lt;p&gt;Gateway Arch and historic riverfront. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/63102"&gt;zip code 63102&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Montana — 59715 (Bozeman)&lt;/h3&gt;

&lt;p&gt;Popular for tourism and outdoor recreation near Yellowstone. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/59715"&gt;zip code 59715&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Nebraska — 68102 (Omaha)&lt;/h3&gt;

&lt;p&gt;Old Market district and downtown Omaha. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/68102"&gt;zip code 68102&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Nevada — 89109 (Las Vegas)&lt;/h3&gt;

&lt;p&gt;The Las Vegas Strip, one of the most visited destinations in the world. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/89109"&gt;zip code 89109&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New Hampshire — 03801 (Portsmouth)&lt;/h3&gt;

&lt;p&gt;Historic coastal city known for tourism. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/03801"&gt;zip code 03801&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New Jersey — 07097 (Jersey City)&lt;/h3&gt;

&lt;p&gt;Major financial district with Manhattan skyline views. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/07097"&gt;zip code 07097&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New Mexico — 87501 (Santa Fe)&lt;/h3&gt;

&lt;p&gt;Historic downtown known for art and architecture. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/87501"&gt;zip code 87501&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;New York — 10001 (New York City)&lt;/h3&gt;

&lt;p&gt;The first ZIP Code ever assigned and located in Manhattan. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/10001"&gt;zip code 10001&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;North Carolina — 28202 (Charlotte)&lt;/h3&gt;

&lt;p&gt;Major banking and financial hub. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/28202"&gt;zip code 28202&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;North Dakota — 58102 (Fargo)&lt;/h3&gt;

&lt;p&gt;Historic downtown Fargo and university areas. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/58102"&gt;zip code 58102&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Ohio — 44114 (Cleveland)&lt;/h3&gt;

&lt;p&gt;Downtown Cleveland near major cultural attractions. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/44114"&gt;zip code 44114&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Oklahoma — 73102 (Oklahoma City)&lt;/h3&gt;

&lt;p&gt;Bricktown and downtown entertainment districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/73102"&gt;zip code 73102&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Oregon — 97209 (Portland)&lt;/h3&gt;

&lt;p&gt;Pearl District, known for redevelopment and culture. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/97209"&gt;zip code 97209&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Pennsylvania — 19103 (Philadelphia)&lt;/h3&gt;

&lt;p&gt;Rittenhouse Square and upscale urban living. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/19103"&gt;zip code 19103&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Rhode Island — 02903 (Providence)&lt;/h3&gt;

&lt;p&gt;Downtown Providence and historic districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/02903"&gt;zip code 02903&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;South Carolina — 29401 (Charleston)&lt;/h3&gt;

&lt;p&gt;Historic architecture and tourism. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/29401"&gt;zip code 29401&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;South Dakota — 57701 (Rapid City)&lt;/h3&gt;

&lt;p&gt;Gateway to Mount Rushmore. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/57701"&gt;zip code 57701&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Tennessee — 37203 (Nashville)&lt;/h3&gt;

&lt;p&gt;Music Row and entertainment districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/37203"&gt;zip code 37203&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Texas — 77002 (Houston)&lt;/h3&gt;

&lt;p&gt;Downtown Houston and the energy industry. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/77002"&gt;zip code 77002&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Utah — 84101 (Salt Lake City)&lt;/h3&gt;

&lt;p&gt;Downtown and Temple Square area. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/84101"&gt;zip code 84101&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Vermont — 05401 (Burlington)&lt;/h3&gt;

&lt;p&gt;Lakefront and university area. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/05401"&gt;zip code 05401&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Virginia — 22314 (Alexandria)&lt;/h3&gt;

&lt;p&gt;Old Town Alexandria and historic waterfront. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/22314"&gt;zip code 22314&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Washington — 98101 (Seattle)&lt;/h3&gt;

&lt;p&gt;Retail core and tourism center. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/98101"&gt;zip code 98101&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;West Virginia — 25301 (Charleston)&lt;/h3&gt;

&lt;p&gt;State government and business district. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/25301"&gt;zip code 25301&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Wisconsin — 53202 (Milwaukee)&lt;/h3&gt;

&lt;p&gt;Lakefront, entertainment, and business districts. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/53202"&gt;zip code 53202&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Wyoming — 82001 (Cheyenne)&lt;/h3&gt;

&lt;p&gt;State capital and historic railroad hub. Check out the details of &lt;a href="https://www.metadapi.com/us-zip-codes/82001"&gt;zip code 82001&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;How Businesses Use ZIP Codes Today&lt;/h2&gt;

&lt;p&gt;ZIP Codes have evolved into a critical tool for:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Location intelligence&lt;/li&gt;
	&lt;li&gt;Customer segmentation&lt;/li&gt;
	&lt;li&gt;Territory planning&lt;/li&gt;
	&lt;li&gt;Delivery optimization&lt;/li&gt;
	&lt;li&gt;Demographic analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For marketers and data professionals, ZIP Codes provide a powerful way to understand geographic patterns in income, population, and consumer behavior.&lt;/p&gt;

&lt;p&gt;For example, let's compare AGI (Adjusted Gross Income) returns between these zip codes and find out how each is performing. Below is a code excerpt, you can download the &lt;a href="https://github.com/Metadapi/zip-code-api/blob/main/samples/Python/compare-famous-zipcodes.py" target="_blank"&gt;full Python code&lt;/a&gt; from our &lt;a href="https://github.com/Metadapi/zip-code-api" target="_blank"&gt;Github Repository&lt;/a&gt;. The full code does the following:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Uses a list of the most famous zip codes in this blog article.&lt;/li&gt;
	&lt;li&gt;Leverages the end point /zipc/v1/zipcodes/{zipcode}/soi?year=2022 to get return statistics for each zip code.&lt;/li&gt;
	&lt;li&gt;Aggregates the data by zip code and sorts the result in descending order.&lt;/li&gt;
	&lt;li&gt;Plots a bar graph with each zip code sorted from top income to lowest income in the list.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;pre&gt;
def get_agi_total_single_year(zipcode, year):
    url = f"{BASE_URL}/{zipcode}/soi?year={year}"
    response = requests.get(url, headers=headers)

    if response.status_code != 200:
        print(f"Error for {zipcode}: {response.status_code}")
        return None

    data = response.json().get("data", [])
    df = pd.DataFrame(data)

    if df.empty:
        return None

    # Ensure numeric
    df["agiGroupId"] = pd.to_numeric(df["agiGroupId"], errors="coerce")
    df["adjustedGrossIncome"] = pd.to_numeric(df["adjustedGrossIncome"], errors="coerce")

    # Filter AGI groups 1–6
    df = df[df["agiGroupId"].between(1, 6)]

    total_agi = df["adjustedGrossIncome"].sum()

    return total_agi
&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;When running this python code you should get the following graph:&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/famous-zip-adjusted-gross-income-comparison.png?ver=HPN_qqTH4OuKKqGiQYAbVw%3d%3d" style="width: 550px; height: 263px;" /&gt;&lt;/p&gt;

&lt;p&gt;Get the &lt;a href="https://github.com/Metadapi/zip-code-api/blob/main/samples/Python/compare-famous-zipcodes.py" target="_blank"&gt;full Python code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ZIP Codes began as a way to make mail delivery faster and more reliable, but they have become an essential part of modern business, logistics, and data analysis. Some ZIP Codes have achieved nationwide recognition due to wealth, tourism, history, or pop culture—making them part of the broader cultural landscape of the United States. Leverage our &lt;a href="https://www.metadapi.com/API-Products/Zip-Code-API"&gt;zip code API&lt;/a&gt; to uncover key data to help you manage your business decisions. &lt;/p&gt;
</description><guid isPermaLink="false">31</guid></item><item><title>Mapping IRS 1040 Tax Data with the Zip Code API: A Complete Guide</title><link>https://www.metadapi.com/Blog/PostId/30/mapping-irs-1040-tax-data-with-the-zip-code-api-a-complete-guide</link><category>Tutorials</category><pubDate>Tue, 21 Oct 2025 22:15:16 GMT</pubDate><description>&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;When analyzing local markets, income patterns, or demographic segments, raw IRS data can be a goldmine — but it’s often difficult to interpret and integrate. The &lt;strong&gt;IRS 1040 Individual Tax Return dataset&lt;/strong&gt; contains rich information about how Americans earn and report income across every ZIP code, yet working directly with these files requires significant data wrangling.&lt;/p&gt;

&lt;p&gt;That’s where the &lt;strong&gt;Zip Code API&lt;/strong&gt; from Metadapi comes in. Our API simplifies access to this information by mapping key IRS 1040 fields to our SOI (Statistics of Income) endpoint. Instead of downloading massive spreadsheets, decoding variable names and cleaning data, developers and analysts can pull precise tax-related metrics for any U.S. ZIP code in seconds.&lt;/p&gt;

&lt;p&gt;This guide walks you through how the &lt;strong&gt;IRS 1040 data is mapped&lt;/strong&gt; within the Zip Code API, what each field represents, and how to use it effectively for your projects.&lt;/p&gt;

&lt;hr /&gt;
&lt;h2&gt;Understanding the Source: IRS 1040 Data&lt;/h2&gt;

&lt;p&gt;The IRS releases anonymized, aggregated data each year based on the &lt;strong&gt;Form 1040&lt;/strong&gt; — the U.S. Individual Income Tax Return. This dataset summarizes filing activity and income components by ZIP code, giving an unparalleled look into local economic characteristics.&lt;/p&gt;

&lt;p&gt;Some examples of what the IRS 1040 data reveals:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;p&gt;Number of individual tax returns filed per ZIP code&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Total and average &lt;strong&gt;Adjusted Gross Income (AGI)&lt;/strong&gt;&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Number of dependents claimed&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Distribution of returns by income bracket&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Types of income (wages, dividends, self-employment, etc.)&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Total taxable income and total tax paid&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For marketers, researchers, and developers, these metrics can reveal &lt;strong&gt;income distribution patterns&lt;/strong&gt;, &lt;strong&gt;household size trends&lt;/strong&gt;, and &lt;strong&gt;economic vitality&lt;/strong&gt; at the community level.&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;The Zip Code API Mapping&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Zip Code API&lt;/strong&gt; organizes these IRS metrics into structured, developer-friendly fields that align directly with 1040 variables. Here’s a simplified look at how some of the mappings work:&lt;/p&gt;

&lt;p&gt;In the below example, we are going to focus on 4 tax return measures. Taxable Interest, Ordinary Dividends, Total Income and Adjusted Gross Income. (Our dataset includes hundreds of different return metrics, but for this example, we'll focus on only 4 of them). &lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/form-1040-agi-total-income-example.png?ver=8iVN8W3VzSx_GBEXXTTQ5g%3d%3d" style="width: 450px; height: 251px;" /&gt;&lt;/p&gt;

&lt;p&gt;The data provided by the IRS is "grouped" into 6 categories based on the size of the adjusted gross income reported:&lt;/p&gt;

&lt;p&gt;Size of adjusted gross income Id: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;1 = $1 under $25,000 &lt;/li&gt;
	&lt;li&gt;2 = $25,000 under $50,000 &lt;/li&gt;
	&lt;li&gt;3 = $50,000 under $75,000 &lt;/li&gt;
	&lt;li&gt;4 = $75,000 under $100,000 &lt;/li&gt;
	&lt;li&gt;5 = $100,000 under $200,000 &lt;/li&gt;
	&lt;li&gt;6 = $200,000 or more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our &lt;a href="https://metadapi.stoplight.io/docs/api/40g8gmktmjeh4-zip-code-irs-statistics-of-income"&gt;API documentation&lt;/a&gt; includes the mapping reference to both the IRS variable name as well as the Tax form box it relates to.  For example, to get AGI (Adjusted Gross Income) we look at field adjustedGrossIncome in the documentation and we find the following information: &lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/agi-adjusted-goss-income-mapping-box11.png?ver=loauDucMBrrhoz_Ir0nTXQ%3d%3d" style="width: 574px; height: 107px;" /&gt;&lt;/p&gt;

&lt;p&gt;From there we know that the AGI is related to variable A00100 and you can find this amount on the tax form &lt;strong&gt;1040 Box 11&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/1040-agi-box-11.png?ver=x4TKwp4pUFjoiWBdV4KxQQ%3d%3d" style="width: 995px; height: 55px;" /&gt;&lt;/p&gt;

&lt;p&gt;Looking at the other field documentation, we can find:&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/totalIncome-1040-box9.png?ver=ZuIM2CcR1xs_9wOtnitaaQ%3d%3d" style="width: 580px; height: 216px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/interest-box2b.png?ver=1CNQHYXGX1iBddZK_VM8gw%3d%3d" style="width: 580px; height: 221px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/1040mapping/dividends-box3b.png?ver=5HPDrvD_FCS_a9j8VziTbw%3d%3d" style="width: 608px; height: 215px;" /&gt;&lt;/p&gt;

&lt;p&gt;We found the right fields we are interested in. Now it's time to call the API, using the following endpoint (only for year 2022):&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;https://global.metadapi.com/zipc/v1/zipcodes/90210/soi?year=2022
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The JSON response includes all the attributes provided by the IRS, for simplicity we'll format the result in an easy to read table (amounts are in '000)&lt;/p&gt;

&lt;table style="border-collapse:collapse; width:875px" width="870"&gt;
	&lt;colgroup&gt;
		&lt;col style="width:48pt" width="64" /&gt;
		&lt;col style="width:141pt" width="187" /&gt;
		&lt;col span="4" style="width:62pt" width="82" /&gt;
		&lt;col style="width:67pt" width="89" /&gt;
		&lt;col span="2" style="width:76pt" width="101" /&gt;
	&lt;/colgroup&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td style="border-bottom:none; height:19px; width:64px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:none; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span style="font-family:"Aptos Narrow",sans-serif"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td style="border-bottom:none; width:187px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:none; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span style="font-family:"Aptos Narrow",sans-serif"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl70" colspan="7" style="border-bottom:1px solid black; width:619px; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:none; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;AGI Group ID&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; height:19px; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;Zip Code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:1px solid black; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;Attribute&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl65" style="border-bottom:1px solid black; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; background-color:#d9d9d9; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="font-weight:700"&gt;&lt;span style="color:black"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;Total&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl67" style="border-bottom:1px solid black; height:19px; text-align:center; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;90210&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;returns&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;               1,710&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   950&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   730&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   570&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                  1,330&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      3,740&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      9,030&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;adjustedGrossIncome&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         17,669&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         34,935&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         45,672&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         49,634&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         191,474&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         5,664,409&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         6,003,793&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;returnsWithTotalIncome&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;               1,710&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   950&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   730&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   570&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                  1,330&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      3,740&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      9,030&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;totalIncomeAmount&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         18,637&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         36,206&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         46,927&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         50,978&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         196,128&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         5,721,670&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $         6,070,546&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;returnsWithTaxableinterest&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   660&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   430&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   360&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   310&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      920&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      3,340&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      6,020&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;taxableinterestAmount&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           1,018&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           1,498&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           1,920&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           1,209&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $              6,758&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $             226,152&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $             238,555&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;returnsWithOrdinaryDividends&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   550&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   330&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   300&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                   270&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      710&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      2,780&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl68" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;                      4,940&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; height:19px; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:1px solid black"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl66" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt;ordinaryDividendsAmount&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           2,718&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           2,878&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           3,739&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           4,139&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $           12,605&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $             517,408&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
			&lt;td class="xl69" style="border-bottom:1px solid black; padding-top:1px; padding-right:1px; padding-left:1px; vertical-align:bottom; white-space:nowrap; border-top:none; border-right:1px solid black; border-left:none"&gt;&lt;span style="font-size:15px"&gt;&lt;span style="color:black"&gt;&lt;span style="font-weight:400"&gt;&lt;span style="font-style:normal"&gt;&lt;span style="text-decoration:none"&gt;&lt;span aptos="" narrow="" style="font-family:"&gt; $             543,487&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;From this result we can now produce all types of analytics or applications that leverage this data.  &lt;/p&gt;

&lt;p&gt;Instead of handling raw column codes like &lt;code inline=""&gt;A00200&lt;/code&gt; or &lt;code inline=""&gt;N02650&lt;/code&gt;, you get intuitive JSON fields ready to integrate into your dashboards, reports, or applications.&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;Why This Mapping Matters&lt;/h3&gt;

&lt;h4&gt;&lt;strong&gt;1. Time Savings for Developers&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;The IRS raw data is extremely detailed but not immediately usable. It requires decoding hundreds of field codes and applying proper weighting. The Zip Code API abstracts all of this complexity, letting you access IRS-sourced data in seconds.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;2. Consistent Field Definitions&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;Every field in the API corresponds to an exact IRS definition. That means your calculations and visualizations remain accurate and consistent with official government data.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;3. Geographic Precision&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;Since the dataset is ZIP code–based, you can zoom into highly localized areas — ideal for comparing neighborhoods, sales territories, or marketing zones.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;4. Use Cases Across Industries&lt;/strong&gt;&lt;/h4&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Marketing &amp; Advertising:&lt;/strong&gt; Target areas by income level or number of dependents.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Real Estate:&lt;/strong&gt; Identify ZIP codes with higher disposable income or family density.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Finance &amp; Lending:&lt;/strong&gt; Evaluate borrower risk by local average AGI and tax liability.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Public Policy &amp; Research:&lt;/strong&gt; Measure income inequality or economic growth by region.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;h3&gt;Example Queries and Use Cases&lt;/h3&gt;

&lt;h4&gt;&lt;strong&gt;Example 1: Compare Income Levels Between Two ZIP Codes&lt;/strong&gt;&lt;/h4&gt;

&lt;pre&gt;
&lt;code&gt;&lt;code&gt;https://global.metadapi.com/zipc/v1/zipcodes/94103/soi&lt;/code&gt;
&lt;code&gt;https://global.metadapi.com/zipc/v1/zipcodes/94016/soi&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Compare the &lt;code inline=""&gt;adjustedGrossIncome&lt;/code&gt; and &lt;code inline=""&gt;returns&lt;/code&gt; fields to measure income concentration between urban and suburban areas.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;Example 2: Identify ZIP Codes with High Business Income&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;Filter by:&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;"businessOrProfessionalNetIncomeAmount" &gt; 100000000
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This helps pinpoint areas with high levels of self-employment or small business activity.&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;Getting Started with the API&lt;/h3&gt;

&lt;p&gt;To explore the mappings and documentation:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;p&gt;Visit &lt;strong&gt;&lt;a href="https://www.metadapi.com/API-Products/Zip-Code-API"&gt;https://www.metadapi.com/API-Products/Zip-Code-API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Sign up for a free developer account.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Review the &lt;a href="https://metadapi.stoplight.io/docs/api/40g8gmktmjeh4-zip-code-irs-statistics-of-income"&gt;&lt;strong&gt;IRS Mapping Documentation&lt;/strong&gt;&lt;/a&gt; section to see every 1040 variable available.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Use your API key to query any ZIP code for immediate JSON data.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;
&lt;h3&gt;Best Practices for Using IRS-Based Data&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Normalize for Population Size:&lt;/strong&gt; Always compare ratios (e.g., AGI per return) rather than raw totals when analyzing across ZIP codes.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Combine with Demographics:&lt;/strong&gt; Layer in population, or census data for richer insights.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Respect Data Granularity:&lt;/strong&gt; IRS data is aggregated to protect privacy, so treat it as indicative rather than exact for individual-level analysis.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Zip Code API&lt;/strong&gt; transforms complex IRS 1040 return data into an accessible, structured format that anyone can use — whether you’re a developer integrating financial indicators, a marketer refining audience profiles, or a researcher studying local economies.&lt;/p&gt;

&lt;p&gt;By providing clear &lt;strong&gt;field mappings between the IRS 1040 dataset and the API’s endpoints&lt;/strong&gt;, you gain reliable access to official income and tax insights for every ZIP code in the United States — without the need for manual data processing.&lt;/p&gt;

&lt;p&gt;Explore the documentation today and start building smarter, data-driven applications powered by accurate, IRS-sourced insights.&lt;/p&gt;
</description><guid isPermaLink="false">30</guid></item><item><title>Unlocking Local Insights: Income by Zip Code</title><link>https://www.metadapi.com/Blog/PostId/29/unlocking-local-insights-income-by-zip-code</link><category>Tutorials</category><pubDate>Thu, 12 Jun 2025 15:39:11 GMT</pubDate><description>&lt;h3&gt;Introduction&lt;/h3&gt;

&lt;p&gt;When you’re crafting a marketing strategy, opening a new retail location, or pitching real-estate investments, “&lt;em&gt;average household income&lt;/em&gt;” is more than a vanity metric—it’s a compass. Granular, up-to-date income data at the &lt;strong&gt;ZIP-code level&lt;/strong&gt; lets you:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Target with precision&lt;/strong&gt; – Tailor offers or ad spend to pockets of higher disposable income instead of blanketing an entire DMA.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Prioritize expansion&lt;/strong&gt; – Rank candidate neighborhoods for your next storefront or service area by purchasing power.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Refine look-alike models&lt;/strong&gt; – Feed income tiers into audience-building tools to spot similar high-value zones nationwide.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Benchmark performance&lt;/strong&gt; – Compare current store revenue against local earning capacity to find outliers—good or bad.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Strengthen investor decks&lt;/strong&gt; – Back up “prime location” claims with IRS-sourced tax-return evidence, not anecdotal observations.&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
&lt;h3&gt;A Quick Demo: Finding High-Income Neighbors with Python&lt;/h3&gt;

&lt;p&gt;Below is the workflow of a simple Python script you could share with analysts or data-savvy clients. It takes three inputs and returns a shortlist of nearby ZIP codes whose **average income** beats a user-defined threshold.&lt;/p&gt;

&lt;table border="1" cellpadding="1" cellspacing="1"&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th scope="col"&gt;Step&lt;/th&gt;
			&lt;th scope="col"&gt;What Happens&lt;/th&gt;
			&lt;th scope="col"&gt;Why it matters&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;1. &lt;strong&gt;Prompt for inputs&lt;/strong&gt;&lt;/td&gt;
			&lt;td&gt;zip_code (any zip code), radius_miles (input the surrounding radius zip code list), income_threshold (in 000's). &lt;/td&gt;
			&lt;td&gt;Keeps the tool flexible for any geography or campaign.&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;2. &lt;strong&gt;Build a Radius Query&lt;/strong&gt;&lt;/td&gt;
			&lt;td&gt;Using the Zip Code radius endpoint, get all of the zip codes that fall within the prompted radius. &lt;/td&gt;
			&lt;td&gt;Marketers often care about “drivable distance” rather than arbitrary county lines.&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;3. &lt;strong&gt;Fetch IRS Statistics of Income by Zip Code and calculate average income&lt;/strong&gt;&lt;/td&gt;
			&lt;td&gt;Grab `Total Gross Income` and `Number of Returns` for each candidate ZIP.  &lt;br /&gt;
			avg_income = total_gross_income / returns&lt;/td&gt;
			&lt;td&gt;While the &lt;strong data-end="353" data-start="338"&gt;sample code&lt;/strong&gt; uses only 2 fields (e.g. &lt;em data-end="402" data-start="379"&gt;Adjusted Gross Income&lt;/em&gt; and &lt;em data-end="426" data-start="407"&gt;Number of Returns&lt;/em&gt;), it is designed as a &lt;strong data-end="467" data-start="449"&gt;starting point&lt;/strong&gt; to show how demographic data can be used in marketing use cases. The same API includes &lt;strong data-end="596" data-start="570"&gt;dozens of other statistical fields&lt;/strong&gt; which marketers can easily incorporate to &lt;strong data-end="743" data-start="706"&gt;refine their targeting strategies&lt;/strong&gt;.&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;4.  &lt;b&gt;Print &amp; Sort Results&lt;/b&gt;&lt;/td&gt;
			&lt;td&gt;Flag rows where `avg_income &gt; income_threshold`; optionally sort descending.&lt;/td&gt;
			&lt;td&gt;Instantly surfaces the high-value zones worth further attention.&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Let's review the code needed for each step&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Prompt for Inputs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you run the python script it will ask for 3 parameters. 1. The zip code. Second a radius in Miles. and Third the income threshold in thousands. (i.e. to represent 100,000 you type 100.) The python code used to ask for input is:&lt;/p&gt;

&lt;pre&gt;
zip_code = input("Enter your ZIP code: ")
radius = input("Enter a radius in miles: ")
input_threshold = input("Enter Thresholds in 000's: ")
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;2. Build a radius query&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To accomplish this, we have a function that takes as parameters the zip code value and the radius. Then we leverage the &lt;a href="https://metadapi.stoplight.io/docs/api/b2b95c4c6b22c-zip-code-radius"&gt;Zip Code Radius&lt;/a&gt; endpoint to get a list of zip codes that fall within the provided radius. The function will return an array with all the zip codes that are within the provided radius. The Python code of the function: &lt;/p&gt;

&lt;pre&gt;
def get_zips_in_radius(zipcode, radius):
    # Define the API endpoint
    url = f"https://global.metadapi.com/zipc/v1/radius?radius={radius}&amp;uom=mi&amp;zipcode={zipcode}"
    zips = []
    try:
        # Make the API request
        response = requests.get(url,headers=vheaders)
        response.raise_for_status()  # Raise an error for unsuccessful responses
        # Parse the JSON response
        data = response.json()
        for zipresp in data["data"]:
            zips.append(zipresp["zipCode"])
    except requests.exceptions.RequestException as e:
        print('error returning the json')
        print(f"An error occurred: {e}")
        return None
    return zips
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;3. Fetch IRS Statistics of income by zip code and calculate average income&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To accomplish this, we must take each of the zip codes provided by the previous function and get the income statistics for the year of 2021 (this parameter can be changed, and we can also query for multiple years). We leverage the &lt;a href="https://metadapi.stoplight.io/docs/api/40g8gmktmjeh4-zip-code-irs-statistics-of-income"&gt;Zip Code IRS Statistics of Income&lt;/a&gt; endpoint and get the Number of returns and the adjusted gross income (AGI) to calculate the average income per zip code, this allows us to smooth out population size differences—useful when comparing a dense city core with a suburban pocket.&lt;/p&gt;

&lt;pre&gt;
def get_total_returns(zipcode, threshold):
    # Define the API endpoint
    url = f"https://global.metadapi.com/zipc/v1/zipcodes/{zipcode}/soi?year=2021"
    try:
        # Make the API request
        response = requests.get(url,headers=vheaders)
        response.raise_for_status()  # Raise an error for unsuccessful responses
        
        # Parse the JSON response
        data = response.json()
        total_returns = sum(item["returns"] for item in data["data"])
        total_agi = sum(item["adjustedGrossIncome"] for item in data["data"])
        if total_returns &gt; 0 :
                avg_agi = total_agi/total_returns
                meets_threshold = "yes" if avg_agi &gt; threshold else "no"
        else:
            avg_agi = 0
            meets_threshold = "no"
        agi_object = {"zipcode":zipcode, "totalAgi":total_agi, "totalReturns": total_returns, "avgAgi":avg_agi, "threshold" : threshold, "meets_threshold" : meets_threshold}
        time.sleep(0.5)
        return agi_object
    
    except requests.exceptions.RequestException as e:
        print('error returning the json')
        print(f"An error occurred: {e}")
        return None
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;4. Print and Sort results&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally we create a data frame with the results, and we sort and print this to screen.  This will allow us to review the data and understand the zip's that meet the threshold criteria. &lt;/p&gt;

&lt;pre&gt;
	df = pd.DataFrame(analysis_dataset)
    sorted_df = df.sort_values(by="avgAgi", ascending=False)
    print(sorted_df)&lt;/pre&gt;

&lt;p&gt;You can download the &lt;a href="https://github.com/Metadapi/zip-code-api/blob/main/samples/Python/ad-targeting-zip-codes-based-on-average-income.py"&gt;full code&lt;/a&gt; of this script in our &lt;a href="https://github.com/Metadapi/zip-code-api/tree/main"&gt;zip code github repository&lt;/a&gt; (you can review this repository for more code samples that leverage the zip code API). &lt;/p&gt;

&lt;p&gt;When we run the script, using the following sample: &lt;/p&gt;

&lt;h3&gt;Sample Output&lt;/h3&gt;

&lt;p&gt;Enter base ZIP: 19103&lt;br /&gt;
Enter radius (miles): 15&lt;br /&gt;
Income threshold ($): 95&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/adTargeting/python_results.png?ver=O261065dYaflf0VfgPR6ig%3d%3d" style="width: 1577px; height: 396px;" /&gt;&lt;/p&gt;

&lt;h3&gt;Extending the Script&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Visualization&lt;/strong&gt; – Drop results into &lt;a href="https://plotly.com/python/"&gt;Plotly&lt;/a&gt; or &lt;a href="https://python-visualization.github.io/folium/latest/"&gt;Folium &lt;/a&gt;to create a heat-map pinwheel around your base ZIP.&lt;br /&gt;
&lt;strong&gt;Additional filters&lt;/strong&gt;* – Layer in filing status, or population density to refine prospect lists.&lt;br /&gt;
&lt;strong&gt;Batch mode&lt;/strong&gt; – Loop through multiple anchor ZIPs to automate territory planning for regional sales teams.&lt;br /&gt;
&lt;strong&gt;Integration&lt;/strong&gt; – Expose it as a microservice so non-technical teammates can hit an endpoint from Excel or &lt;a href="https://zapier.com/"&gt;Zapier&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;
&lt;h3&gt;Key Takeaways&lt;/h3&gt;

&lt;p&gt;Having &lt;strong&gt;Income by ZIP Code&lt;/strong&gt; at your fingertips isn’t just academic—it’s actionable. Whether you’re optimizing ad bids, scouting expansion zones, or validating a property’s upside, localized income stats transform hunches into data-driven moves.&lt;/p&gt;

&lt;section class="call-to-action with-full-borders mb-xl"&gt;
&lt;div class="call-to-action-content"&gt;
&lt;h3&gt;&lt;strong&gt;Ready to put it to work?&lt;/strong&gt; Grab the demo script, plug in your API key for the Zip Code API , and start illuminating your income targets hiding in plain sight!&lt;/h3&gt;
&lt;/div&gt;

&lt;div class="call-to-action-btn"&gt;&lt;a class="btn btn-lg btn-primary" href="https://www.metadapi.com/API-Products/Zip-Code-API" target="_blank"&gt;Try Today!&lt;/a&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;/div&gt;
</description><guid isPermaLink="false">29</guid></item><item><title>How Demographic data by Zip Code Enhances Ad Targeting</title><link>https://www.metadapi.com/Blog/PostId/28/how-demographic-data-by-zip-code-enhances-ad-targeting</link><category>About the Data,Tutorials</category><pubDate>Sun, 20 Apr 2025 23:20:00 GMT</pubDate><description>&lt;p&gt;In today's competitive marketing landscape, businesses must deliver highly targeted ads to maximize engagement and ROI. By leveraging &lt;strong&gt;demographic data by zip code&lt;/strong&gt;, advertisers can refine their audience segmentation, personalize messaging, and optimize ad spend.&lt;/p&gt;

&lt;p&gt;Here’s how it can improve advertising effectiveness:  &lt;/p&gt;

&lt;h2&gt;1. Hyper-Targeted Audience Segmentation&lt;/h2&gt;

&lt;p&gt;Instead of broad, generic ads, businesses can tailor their campaigns based on &lt;strong&gt;income&lt;/strong&gt;, &lt;strong&gt;age&lt;/strong&gt;, &lt;strong&gt;household size&lt;/strong&gt;, and &lt;strong&gt;lifestyle preferences&lt;/strong&gt; in specific zip codes.  &lt;br /&gt;
- Example: A luxury car brand can focus ads on high-income zip codes, while a discount retailer targets lower-income areas.  &lt;/p&gt;

&lt;h2&gt;2. Location-Based Personalization&lt;/h2&gt;

&lt;p&gt;Different neighborhoods have different consumer behaviors. Knowing these trends helps create &lt;strong&gt;personalized messaging&lt;/strong&gt; that resonates with local audiences.  &lt;br /&gt;
- Example: A gym chain can advertise weight-loss programs in zip codes where health-conscious individuals are concentrated.  &lt;/p&gt;

&lt;h2&gt;3. Optimized Ad Spend &amp; Reduced Waste&lt;/h2&gt;

&lt;p&gt;Businesses can &lt;strong&gt;avoid ad spend waste&lt;/strong&gt; by excluding areas that don’t match their ideal customer profile.  &lt;br /&gt;
- Example: A high-end steakhouse wouldn’t advertise in areas with a high percentage of vegetarians.  &lt;/p&gt;

&lt;h2&gt;4. Improved Direct Mail &amp; Local Promotions&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Direct mail campaigns&lt;/strong&gt; can be optimized by sending flyers or postcards only to relevant households.  &lt;br /&gt;
- Example: A real estate agency can target zip codes with high homeownership rates for refinancing offers.  &lt;/p&gt;

&lt;h2&gt;5. Better Social Media &amp; Digital Ads&lt;/h2&gt;

&lt;p&gt;Platforms like &lt;strong&gt;Facebook&lt;/strong&gt;, &lt;strong&gt;Google Ads&lt;/strong&gt;, and &lt;strong&gt;TikTok&lt;/strong&gt; allow businesses to target audiences based on location, making zip code demographic data crucial for &lt;strong&gt;geo-targeting&lt;/strong&gt;.&lt;br /&gt;
- Example: A luxury fashion brand can set Facebook ads to appear in high-income zip codes with high online shopping activity.  &lt;/p&gt;

&lt;h2&gt;6. Enhanced Competitor Analysis&lt;/h2&gt;

&lt;p&gt;Businesses can identify where their competitors are thriving and adjust their strategy accordingly.  &lt;br /&gt;
- Example: A new restaurant can analyze zip codes with a strong competitor presence and decide whether to compete or find untapped markets.  &lt;/p&gt;

&lt;h2&gt;7. Seasonal &amp; Event-Based Marketing&lt;/h2&gt;

&lt;p&gt;Certain areas have seasonal trends that impact consumer demand. Businesses can adjust their ads based on &lt;strong&gt;local events&lt;/strong&gt;, &lt;strong&gt;holidays&lt;/strong&gt;, or &lt;strong&gt;climate-specific&lt;/strong&gt; needs.&lt;br /&gt;
- Example: A ski resort can increase advertising in zip codes that show interest in winter sports.  &lt;/p&gt;

&lt;p&gt;By integrating &lt;strong&gt;demographic data by zip code&lt;/strong&gt; into ad targeting strategies, businesses can maximize engagement, improve ROI, and create highly relevant, localized marketing campaigns.&lt;/p&gt;
</description><guid isPermaLink="false">28</guid></item><item><title>Top 5 Benefits of Accessing Zip Code Data through an API</title><link>https://www.metadapi.com/Blog/PostId/27/top-5-benefits-of-accessing-zip-code-data-through-an-api</link><category>About the Data</category><pubDate>Tue, 05 Nov 2024 00:03:00 GMT</pubDate><description>&lt;p&gt;In an increasingly data-driven world, access to detailed and accurate &lt;strong&gt;zip code data &lt;/strong&gt;is invaluable. Businesses, researchers, marketers, and developers leverage this data to gain insights, streamline services, and make strategic decisions. An API that provides zip code-based data and statistics unlocks incredible potential. Here’s why accessing zip code data through an API can be a game-changer and the top five benefits it offers.&lt;/p&gt;

&lt;p&gt;Accessing data typically reserved for analytics and reporting through an API unlocks real-time, flexible integration opportunities, empowering businesses to build more responsive, data-driven applications, websites, and mobile apps. This approach enables businesses to make data-driven decisions faster, personalize customer experiences, and streamline workflows with up-to-date insights. For example, an API providing IRS-based zip code statistics could transform &lt;strong&gt;financial planning&lt;/strong&gt;, marketing workflows, and risk assessments in real time. By offering zip code data that that has been curated, integrated and made available (in easy to consume data models), we can streamline development that otherwise would take months to accomplish. &lt;/p&gt;

&lt;h2&gt;Benefits&lt;/h2&gt;

&lt;h2&gt;1. Real-Time Data Access and Automation&lt;/h2&gt;

&lt;p&gt;One of the biggest advantages of accessing zip code data through an API is the ability to retrieve updated information in real-time. APIs enable seamless integration with your systems, which means data is refreshed without manual effort. This can be invaluable for applications that need to stay current, such as tracking demographic shifts, economic trends, or changes in income distributions within specific areas. Automated data updates also mean less manual work and reduced chances of errors, allowing your team to focus on higher-level analytics and decision-making.&lt;/p&gt;

&lt;h2&gt;2. Precision in Targeting and Marketing&lt;/h2&gt;

&lt;p&gt;APIs allow businesses to obtain hyper-local data that can refine marketing efforts, which is particularly useful in geotargeting strategies. By accessing demographic and economic data down to the zip code level, companies can better understand regional preferences and economic profiles, creating highly tailored marketing campaigns. For example, knowing average income levels, family sizes, or household spending behaviors within specific zip codes can help craft messages that resonate with specific audiences, improving engagement and conversions.&lt;/p&gt;

&lt;h2&gt;3. Enhanced Data Depth and Customization&lt;/h2&gt;

&lt;p&gt;A zip code data API can offer extensive details beyond basic location data, such as insights into tax returns, income distribution, employment rates, and even migration trends. By customizing API queries, users can filter and aggregate data based on their specific needs, extracting only the most relevant information. This is particularly useful for industries like finance, real estate, and urban planning, where nuanced understanding of local economic trends is crucial for making informed decisions.&lt;/p&gt;

&lt;h2&gt;4. Scalability for Large-Scale Data Analysis&lt;/h2&gt;

&lt;p&gt;For companies managing extensive datasets or conducting large-scale geographic analyses, APIs streamline the process, making it efficient and scalable. Rather than downloading and processing massive datasets manually, APIs can be used to access only the data that’s needed when it’s needed, saving both time and resources. This makes it possible to analyze zip code data across thousands of locations without straining infrastructure, which is especially useful for applications such as market analysis, competitor benchmarking, and location-based service optimization.&lt;/p&gt;

&lt;h2&gt;5. Improved User Experience with Seamless Integration&lt;/h2&gt;

&lt;p&gt;For applications that involve user interaction — such as real estate apps, travel services, or e-commerce platforms — an API with zip code data can provide an enhanced user experience. Integrating zip code data directly into user-facing applications allows you to offer personalized services, like showing nearby service providers, estimating delivery times based on geographic data, or even recommending products that are popular within certain zip codes. This localization can improve customer satisfaction by making interactions feel more relevant and convenient.&lt;/p&gt;

&lt;h2&gt;Sample Use cases&lt;/h2&gt;

&lt;div&gt;
&lt;h3&gt;Real Estate and Financial Services&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: A real estate app integrates the API to display neighborhood income statistics, average tax return values, and investment patterns, helping users make more informed buying or selling decisions.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: Homebuyers and investors can gauge the financial health and growth potential of different zip codes, enhancing transparency in the market.&lt;/p&gt;

&lt;h3&gt;Retail and E-commerce&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: An e-commerce website uses the API to tailor product recommendations and promotions based on regional income and spending trends.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: Personalized shopping experiences boost conversions, customer loyalty, and satisfaction, driving sales across various demographics.&lt;br /&gt;
Marketing and Advertising:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: A marketing platform integrates the API to enhance audience segmentation, allowing campaigns to target zip codes with specific income levels, age groups, or spending behaviors.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: Marketers can run more precise campaigns, improving ROI by reaching the right audience with relevant content.&lt;br /&gt;
Insurance and Risk Assessment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Insurance companies use the API for risk assessment in different zip codes based on income stability and economic trends.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: With data-driven risk models, insurance companies can adjust premiums accurately and reduce losses, while customers receive fairer pricing.&lt;br /&gt;
Public Policy and Nonprofit Organizations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Nonprofits use the API to allocate resources to zip codes showing signs of economic decline or low income levels, prioritizing areas with higher need.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: Organizations can maximize the impact of resources and support services by targeting communities most likely to benefit, enhancing social outcomes.&lt;/p&gt;

&lt;h3&gt;Healthcare and Wellness&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Healthcare providers integrate the API to identify regional health patterns linked to economic data (e.g., income vs. wellness spending) for community-targeted health initiatives.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: By understanding economic factors influencing health, providers can better address community needs, enhancing public health outcomes.&lt;br /&gt;
Travel and Hospitality:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;: Travel companies use the API to understand which zip codes have higher disposable incomes, allowing them to target potential travelers with customized vacation packages.&lt;br /&gt;
&lt;strong&gt;Benefit&lt;/strong&gt;: This data allows travel brands to promote premium offerings to audiences with higher travel budgets, boosting booking rates and customer satisfaction.&lt;/p&gt;
&lt;/div&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Accessing &lt;a href="/API-Products/Zip-Code-API?utm_content=blog_link"&gt;zip code data through an API&lt;/a&gt; opens up a world of opportunities for precise targeting, in-depth analytics, and operational efficiency. From real-time access to scalable, customized data solutions, APIs make it easier to harness the power of geographic data at any scale. By integrating a zip code data API into your business processes, you can unlock powerful insights and improve service delivery for a range of applications. So, whether you’re looking to optimize marketing efforts, enhance user experiences, or drive strategic decisions, a zip code data API could be a valuable asset in achieving your goals.&lt;/p&gt;
</description><guid isPermaLink="false">27</guid></item><item><title>The Power of Zip Code Statistics: Leveraging IRS Data for Targeted Market Analysis</title><link>https://www.metadapi.com/Blog/PostId/26/zip-code-statistics-leveraging-irs-data-for-targeted-market-analysis</link><category>About the Data</category><pubDate>Thu, 05 Sep 2024 23:30:10 GMT</pubDate><description>&lt;h2&gt;The Power of Zip Code Data&lt;/h2&gt;

&lt;p&gt;A zip code might seem like a simple numerical identifier, but it holds an immense amount of information. Every zip code represents a unique community, each with its own demographics, income levels, spending patterns, and economic behaviors. By tapping into &lt;strong&gt;IRS data&lt;/strong&gt;, which provides detailed statistics on income distributions across different zip codes, businesses can gain a deeper understanding of who their potential customers are, what they earn, and how they might behave economically.&lt;/p&gt;

&lt;h3&gt;Why IRS Data?&lt;/h3&gt;

&lt;p&gt;The IRS collects income data from tax returns, making it one of the most comprehensive and reliable sources for analyzing regional economic conditions. When integrated into a market analysis, IRS income data provides insights that can help businesses:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Understand the average income levels&lt;/strong&gt; within specific zip codes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Identify high-income and low-income areas&lt;/strong&gt;, enabling businesses to target their products and services more effectively.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Recognize economic trends&lt;/strong&gt; that might influence spending habits or demand for particular products.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this level of insight, companies can make &lt;strong&gt;data-driven decisions&lt;/strong&gt; that take into account the unique economic conditions of the regions they serve, leading to more successful outcomes.&lt;/p&gt;

&lt;h2&gt;The Role of Market Analysis in Targeted Marketing&lt;/h2&gt;

&lt;p&gt;Effective marketing starts with understanding your audience. &lt;strong&gt;Market analysis&lt;/strong&gt; that leverages &lt;strong&gt;zip code statistics&lt;/strong&gt; helps businesses break down complex consumer data into actionable insights. Instead of guessing what potential customers need or want, companies can use &lt;strong&gt;data-driven&lt;/strong&gt; approaches to identify areas of opportunity and tailor their strategies to specific segments.&lt;/p&gt;

&lt;p&gt;For example, a luxury brand selling high-end products can focus its efforts on regions with higher income levels, as determined by IRS data. Meanwhile, a budget-friendly retailer might target regions with lower average incomes, adjusting their messaging and product offerings to align with local economic realities.&lt;/p&gt;

&lt;h3&gt;Benefits of Data-Driven Market Analysis&lt;/h3&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Improved Customer Targeting&lt;/strong&gt;: By analyzing &lt;strong&gt;zip code statistics&lt;/strong&gt; based on &lt;strong&gt;IRS data&lt;/strong&gt;, businesses can ensure their marketing efforts reach the right people. This reduces wasted resources on untargeted campaigns.  &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Enhanced ROI&lt;/strong&gt;: Tailoring your strategy based on accurate data leads to more effective campaigns and, ultimately, a better return on investment (ROI).  &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Smarter Product Distribution&lt;/strong&gt;: Knowing where potential customers with specific income levels live helps businesses decide where to stock certain products and services.  &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Localized Marketing Strategies&lt;/strong&gt;: Every region is different. A one-size-fits-all marketing strategy is likely to fall flat. By using detailed income data, businesses can create marketing campaigns that resonate with local audiences.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;How to Access IRS Zip Code Statistics&lt;/h2&gt;

&lt;p&gt;Accessing this powerful data doesn’t have to be complicated. Through the &lt;a href="https://www.metadapi.com/API-Products/Zip-Code-API"&gt;Zip Code API&lt;/a&gt; endpoint that returns IRS income statistics by zip code, businesses can easily integrate this data into their existing systems. This API provides access to critical information, allowing for quick and effective market analysis.&lt;/p&gt;

&lt;p&gt;&lt;span class="badge badge-success"&gt;GET &lt;/span&gt;&lt;span dir="rtl"&gt;https://global.metadapi.com/zipc/v1/zipcodes/{zipcode}/soi&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Using the endpoint &lt;a href="https://metadapi.stoplight.io/docs/api/40g8gmktmjeh4-zip-code-irs-statistics-of-income" target="_blank"&gt;&lt;strong&gt;IRS income statistics API&lt;/strong&gt;&lt;/a&gt;, businesses can:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Request data for specific zip codes&lt;/strong&gt; or a range of zip codes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Analyze average income levels&lt;/strong&gt;, identifying where higher or lower incomes are concentrated.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Visualize income distribution&lt;/strong&gt; to understand how wealth is spread across different regions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This API simplifies the process of gathering detailed market data, enabling businesses to harness the full power of zip code statistics and make better, faster, and more informed decisions.&lt;/p&gt;

&lt;p&gt;Sample request to get the statistics of income for zip code 90210 for the year of 2021:&lt;/p&gt;

&lt;p&gt;&lt;span class="badge badge-success"&gt;GET &lt;/span&gt;&lt;span dir="rtl"&gt;https://global.metadapi.com/zipc/v1/zipcodes/90210/soi?year=2021&lt;/span&gt;&lt;/p&gt;
&lt;div class="toggle toggle-primary" data-plugin-toggle="toggle"&gt;
	&lt;section class="toggle"&gt;
		&lt;button class="toggle-heading" type="button"&gt;Click to See Full Response&lt;/button&gt;
		&lt;div class="toggle-content"&gt;
			&lt;p&gt;
&lt;pre&gt;
{
    "links": {
        "self": "https://global.metadapi.com/zipc/v1/zipcodes/90210/soi?year=2021"
    },
    "meta": {
        "count": 6
    },
    "data": [
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "1",
            "agiGroup": "$1 under $25,000",
            "returns": 1720,
            "singleReturns": 1470,
            "jointReturns": 130,
            "headOfHouseholdReturns": 60,
            "electronicallyFilledReturns": 1550,
            "computerPreparedPaperReturns": 70,
            "returnsWithPaidPreparedSignature": 1340,
            "returnsWithDirectDeposit": 560,
            "returnsWithVirtualCurrency": 80,
            "numberOfIndividuals": 1630,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 50,
            "elderlyReturns": 340,
            "adjustedGrossIncome": 19887,
            "returnsWithTotalIncome": 1720,
            "totalIncomeAmount": 20770,
            "returnsWithSalariesWages": 770,
            "salariesWagesAmount": 10501,
            "returnsWithTaxableinterest": 510,
            "taxableinterestAmount": 986,
            "returnsWithOrdinaryDividends": 530,
            "ordinaryDividendsAmount": 1725,
            "returnsWithQualifiedDividends": 490,
            "qualifiedDividendsAmount": 1104,
            "returnsStateLocalIncomeTaxRefunds": 0,
            "stateLocalIncomeTaxRefundAmount": 0,
            "returnsWithBusinessOrProfessionalNetIncome": 510,
            "businessOrProfessionalNetIncomeAmount": 2475,
            "returnsWithNetCapitalGain": 530,
            "netCapitalGainAmount": 2953,
            "returnsWithTaxableIraDistributions": 60,
            "taxableIradistributionAmount": 354,
            "returnsWithTaxablePensionsAnnuities": 60,
            "taxablePensionsAndAnnuitiesAmount": 540,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 310,
            "unemploymentCompensationAmount": 4720,
            "returnsWithTaxableSocialSecurityBenefits": 70,
            "taxableSocialSecurityBenefitsAmount": 205,
            "returnsWithPartnershipNetIncome": 180,
            "partnershipNetIncomeAmount": -715,
            "returnsWithTotalStatutoryAdjustments": 460,
            "totalStatutoryAdjustmentsAmount": 883,
            "returnsWithEducatorExpenses": 0,
            "educatorExpensesAmount": 0,
            "returnsWithSelfEmployedRetirementPlans": 0,
            "selfEmployedRetirementPlansAmount": 0,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 50,
            "selfEmployedHealthInsuranceDeductionAmount": 291,
            "returnsWIthIraPayments": 0,
            "iraPaymentAmount": 0,
            "returnsWithStudenLoaninterestDeduction": 30,
            "studentLoaninterestDeductionAmount": 38,
            "returnsWithCharitableContributionsWithStandardDeductions": 300,
            "charitableContributionsWithStandardDeductionsAmount": 79,
            "returnsWithTotalStandardDeduction": 1560,
            "standardDeductionAmount": 18751,
            "returnsWithBasicStandardDeduction": 1560,
            "basicStandardDeductionAmount": 18388,
            "returnsWithAdditionalStandardDeduction": 200,
            "additionalStandardDeductionAmount": 363,
            "returnsWithItemizedDeductions": 150,
            "itemizedDeductionsAmount": 4743,
            "agiForItemizedReturnsAmount": 1871,
            "returnsWithTotalMedicalDentalDeduction": 90,
            "totalMedicalDentalDeductionAmount": 2033,
            "returnsWithStateAndLocalIncomeTaxes": 70,
            "stateAndLocalIncomeTaxesAmount": 363,
            "returnsWIthStateAndLocalGeneralSalesTax": 80,
            "stateAndLocalGeneralSalesTaxAmount": 52,
            "returnsWithRealEstateTaxes": 90,
            "realEstateTaxesAmount": 1786,
            "returnsWithPersonalPropertyTaxes": 30,
            "personalPropertyTaxesAmount": 16,
            "returnsWithLimitedStateLocalTaxes": 150,
            "limitedStateLocalTaxesAmount": 896,
            "returnsWithTotalTaxesPaid": 150,
            "totalTaxesPaidAmount": 878,
            "returnsWithHomeMortageInterestPaid": 70,
            "homeMortgageInterestPaidAmount": 1341,
            "returnsWithHomeMortgageFromPersonalSeller": 0,
            "homeMortgageFromPersonalSellerAmount": 0,
            "returnsWithDeductiblePoints": 0,
            "deductiblePointsAmount": 0,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 30,
            "investmentInterestPaidAmount": 299,
            "returnsWithTotalCharitableContributions": 80,
            "totalCharitableContributionsAmount": 286,
            "returnsWithOtherNonLimitedMiscDeductions": 0,
            "otherNonLimitedMiscDeductionsAmount": 0,
            "returnsWithQualifiedBusinessIncomeDeduction": 210,
            "qualifiedBusinessIncomeDeductionAmount": 168,
            "returnsWithTaxableIncome": 770,
            "taxableIncomeAmount": 4496,
            "returnsWithIncomeTaxBeforeCredits": 700,
            "incomeTaxBeforeCreditsAmount": 449,
            "returnsWithAlternativeMinimumTax": 0,
            "alternativeMinimumTaxAmount": 0,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 30,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 6,
            "returnsWithTotalTaxCredits": 190,
            "totalTaxCreditsAmount": 65,
            "returnsWithForeignTaxCredit": 70,
            "foreignTaxCreditAmount": 8,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 80,
            "nonRefundableEducationCreditAmount": 46,
            "returnsWithRetirementSavingsContributionCredit": 30,
            "retirementSavingsContributionCreditAmount": 6,
            "returnsWithChildAndOtherDependentCredit": 0,
            "childAndOtherDependentCreditAmount": 0,
            "returnsWithResidentialEnergyTaxCredit": 0,
            "residentialEnergyTaxCreditAmount": 0,
            "returnsWithSelfEmploymentTax": 420,
            "selfEmploymentTaxAmount": 614,
            "returnsWithTotalPremiumTaxCredit": 160,
            "totalPremiumTaxCreditAmount": 835,
            "returnsWithAdvancePremiumTaxCredit": 160,
            "advancePremiumTaxCreditAmount": 797,
            "returnsWithTotalTaxPayments": 1170,
            "totalTaxPaymentsAmount": 3829,
            "returnsWithEarnedIncomeCredit": 490,
            "earnedIncomeCreditAmount": 535,
            "returnsWithExcessEarnedIncomeCredit": 320,
            "excessEarnedIncomeCreditAmount": 320,
            "returnsWithAdditionalChildTaxCredit": 80,
            "additionalChildTaxCreditAmount": 207,
            "returnsWithRefundableEducationCredit": 90,
            "refundableEducationCreditAmount": 84,
            "returnsWithNetPremiumTaxCredit": 90,
            "netPremiumTaxCreditAmount": 75,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 20,
            "qualifiedSickAndFamilyLeaveCreditAmount": 53,
            "returnsWithRefundableChildAndDependentCredit": 0,
            "refundableChildAndDependentCareCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 20,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 88,
            "returnsWithRecoveryRebateCredit": 160,
            "recoveryRebateCreditAmount": 254,
            "returnsWithEconomicImpactPaymentFirstRound": 1070,
            "economicImpactPaymentFirstRoundAmount": 1871,
            "returnsWitheconomicImpactPaymentSecondRound": 600,
            "economicImpactPaymentSecondRoundAmount": 383,
            "returnsWithIncomeTaxAfterCredits": 890,
            "incomeTaxAfterCreditAmount": 1094,
            "returnsWithTaxLiability": 0,
            "taxLiabilityAmount": 0,
            "returnsWithAdditionalMedicareTax": 0,
            "additionalMedicareTaxAmount": 0,
            "returnsWithNetInvestmentIncomeTax": 420,
            "netInvestmentIncomeTaxAmount": 451,
            "returnsWithTaxDueAtTimeOfFiling": 960,
            "taxDueAtTimeOfFilingAmount": 3183,
            "returnsWithOverpaymentsRefunded": 850,
            "overpaymentRefundedAmount": 1830,
            "returnsWithCreditToNextYearTax": 120,
            "creditToNextYearTaxAmount": 596
        },
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "2",
            "agiGroup": "$25,000 under $50,000",
            "returns": 1010,
            "singleReturns": 800,
            "jointReturns": 130,
            "headOfHouseholdReturns": 50,
            "electronicallyFilledReturns": 920,
            "computerPreparedPaperReturns": 50,
            "returnsWithPaidPreparedSignature": 770,
            "returnsWithDirectDeposit": 370,
            "returnsWithVirtualCurrency": 60,
            "numberOfIndividuals": 1280,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 40,
            "elderlyReturns": 240,
            "adjustedGrossIncome": 36621,
            "returnsWithTotalIncome": 1010,
            "totalIncomeAmount": 37754,
            "returnsWithSalariesWages": 610,
            "salariesWagesAmount": 18634,
            "returnsWithTaxableinterest": 420,
            "taxableinterestAmount": 1080,
            "returnsWithOrdinaryDividends": 360,
            "ordinaryDividendsAmount": 2500,
            "returnsWithQualifiedDividends": 340,
            "qualifiedDividendsAmount": 1645,
            "returnsStateLocalIncomeTaxRefunds": 40,
            "stateLocalIncomeTaxRefundAmount": 52,
            "returnsWithBusinessOrProfessionalNetIncome": 320,
            "businessOrProfessionalNetIncomeAmount": 4292,
            "returnsWithNetCapitalGain": 380,
            "netCapitalGainAmount": 3963,
            "returnsWithTaxableIraDistributions": 60,
            "taxableIradistributionAmount": 687,
            "returnsWithTaxablePensionsAnnuities": 60,
            "taxablePensionsAndAnnuitiesAmount": 833,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 260,
            "unemploymentCompensationAmount": 4690,
            "returnsWithTaxableSocialSecurityBenefits": 150,
            "taxableSocialSecurityBenefitsAmount": 1233,
            "returnsWithPartnershipNetIncome": 170,
            "partnershipNetIncomeAmount": -1768,
            "returnsWithTotalStatutoryAdjustments": 320,
            "totalStatutoryAdjustmentsAmount": 1133,
            "returnsWithEducatorExpenses": 0,
            "educatorExpensesAmount": 0,
            "returnsWithSelfEmployedRetirementPlans": 0,
            "selfEmployedRetirementPlansAmount": 0,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 70,
            "selfEmployedHealthInsuranceDeductionAmount": 443,
            "returnsWIthIraPayments": 30,
            "iraPaymentAmount": 177,
            "returnsWithStudenLoaninterestDeduction": 50,
            "studentLoaninterestDeductionAmount": 53,
            "returnsWithCharitableContributionsWithStandardDeductions": 280,
            "charitableContributionsWithStandardDeductionsAmount": 82,
            "returnsWithTotalStandardDeduction": 850,
            "standardDeductionAmount": 12282,
            "returnsWithBasicStandardDeduction": 850,
            "basicStandardDeductionAmount": 12064,
            "returnsWithAdditionalStandardDeduction": 120,
            "additionalStandardDeductionAmount": 218,
            "returnsWithItemizedDeductions": 160,
            "itemizedDeductionsAmount": 7030,
            "agiForItemizedReturnsAmount": 5775,
            "returnsWithTotalMedicalDentalDeduction": 80,
            "totalMedicalDentalDeductionAmount": 3382,
            "returnsWithStateAndLocalIncomeTaxes": 70,
            "stateAndLocalIncomeTaxesAmount": 600,
            "returnsWIthStateAndLocalGeneralSalesTax": 80,
            "stateAndLocalGeneralSalesTaxAmount": 64,
            "returnsWithRealEstateTaxes": 110,
            "realEstateTaxesAmount": 1689,
            "returnsWithPersonalPropertyTaxes": 50,
            "personalPropertyTaxesAmount": 23,
            "returnsWithLimitedStateLocalTaxes": 150,
            "limitedStateLocalTaxesAmount": 1055,
            "returnsWithTotalTaxesPaid": 160,
            "totalTaxesPaidAmount": 1051,
            "returnsWithHomeMortageInterestPaid": 80,
            "homeMortgageInterestPaidAmount": 1757,
            "returnsWithHomeMortgageFromPersonalSeller": 0,
            "homeMortgageFromPersonalSellerAmount": 0,
            "returnsWithDeductiblePoints": 30,
            "deductiblePointsAmount": 7,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 0,
            "investmentInterestPaidAmount": 0,
            "returnsWithTotalCharitableContributions": 90,
            "totalCharitableContributionsAmount": 379,
            "returnsWithOtherNonLimitedMiscDeductions": 0,
            "otherNonLimitedMiscDeductionsAmount": 0,
            "returnsWithQualifiedBusinessIncomeDeduction": 350,
            "qualifiedBusinessIncomeDeductionAmount": 781,
            "returnsWithTaxableIncome": 940,
            "taxableIncomeAmount": 19347,
            "returnsWithIncomeTaxBeforeCredits": 910,
            "incomeTaxBeforeCreditsAmount": 1986,
            "returnsWithAlternativeMinimumTax": 0,
            "alternativeMinimumTaxAmount": 0,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 50,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 29,
            "returnsWithTotalTaxCredits": 280,
            "totalTaxCreditsAmount": 202,
            "returnsWithForeignTaxCredit": 110,
            "foreignTaxCreditAmount": 17,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 110,
            "nonRefundableEducationCreditAmount": 140,
            "returnsWithRetirementSavingsContributionCredit": 40,
            "retirementSavingsContributionCreditAmount": 7,
            "returnsWithChildAndOtherDependentCredit": 60,
            "childAndOtherDependentCreditAmount": 35,
            "returnsWithResidentialEnergyTaxCredit": 0,
            "residentialEnergyTaxCreditAmount": 0,
            "returnsWithSelfEmploymentTax": 270,
            "selfEmploymentTaxAmount": 812,
            "returnsWithTotalPremiumTaxCredit": 140,
            "totalPremiumTaxCreditAmount": 683,
            "returnsWithAdvancePremiumTaxCredit": 140,
            "advancePremiumTaxCreditAmount": 634,
            "returnsWithTotalTaxPayments": 840,
            "totalTaxPaymentsAmount": 4173,
            "returnsWithEarnedIncomeCredit": 70,
            "earnedIncomeCreditAmount": 142,
            "returnsWithExcessEarnedIncomeCredit": 40,
            "excessEarnedIncomeCreditAmount": 63,
            "returnsWithAdditionalChildTaxCredit": 80,
            "additionalChildTaxCreditAmount": 233,
            "returnsWithRefundableEducationCredit": 50,
            "refundableEducationCreditAmount": 44,
            "returnsWithNetPremiumTaxCredit": 80,
            "netPremiumTaxCreditAmount": 109,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount": 0,
            "returnsWithRefundableChildAndDependentCredit": 0,
            "refundableChildAndDependentCareCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 0,
            "returnsWithRecoveryRebateCredit": 80,
            "recoveryRebateCreditAmount": 134,
            "returnsWithEconomicImpactPaymentFirstRound": 820,
            "economicImpactPaymentFirstRoundAmount": 1565,
            "returnsWitheconomicImpactPaymentSecondRound": 840,
            "economicImpactPaymentSecondRoundAmount": 1784,
            "returnsWithIncomeTaxAfterCredits": 880,
            "incomeTaxAfterCreditAmount": 2670,
            "returnsWithTaxLiability": 0,
            "taxLiabilityAmount": 0,
            "returnsWithAdditionalMedicareTax": 0,
            "additionalMedicareTaxAmount": 0,
            "returnsWithNetInvestmentIncomeTax": 370,
            "netInvestmentIncomeTaxAmount": 909,
            "returnsWithTaxDueAtTimeOfFiling": 600,
            "taxDueAtTimeOfFilingAmount": 2401,
            "returnsWithOverpaymentsRefunded": 510,
            "overpaymentRefundedAmount": 1665,
            "returnsWithCreditToNextYearTax": 120,
            "creditToNextYearTaxAmount": 736
        },
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "3",
            "agiGroup": "$50,000 under $75,000",
            "returns": 770,
            "singleReturns": 590,
            "jointReturns": 120,
            "headOfHouseholdReturns": 50,
            "electronicallyFilledReturns": 710,
            "computerPreparedPaperReturns": 30,
            "returnsWithPaidPreparedSignature": 600,
            "returnsWithDirectDeposit": 270,
            "returnsWithVirtualCurrency": 70,
            "numberOfIndividuals": 1020,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 40,
            "elderlyReturns": 220,
            "adjustedGrossIncome": 47867,
            "returnsWithTotalIncome": 770,
            "totalIncomeAmount": 49182,
            "returnsWithSalariesWages": 530,
            "salariesWagesAmount": 27100,
            "returnsWithTaxableinterest": 330,
            "taxableinterestAmount": 1184,
            "returnsWithOrdinaryDividends": 310,
            "ordinaryDividendsAmount": 2567,
            "returnsWithQualifiedDividends": 290,
            "qualifiedDividendsAmount": 1685,
            "returnsStateLocalIncomeTaxRefunds": 30,
            "stateLocalIncomeTaxRefundAmount": 37,
            "returnsWithBusinessOrProfessionalNetIncome": 210,
            "businessOrProfessionalNetIncomeAmount": 4471,
            "returnsWithNetCapitalGain": 330,
            "netCapitalGainAmount": 3868,
            "returnsWithTaxableIraDistributions": 60,
            "taxableIradistributionAmount": 743,
            "returnsWithTaxablePensionsAnnuities": 60,
            "taxablePensionsAndAnnuitiesAmount": 1643,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 120,
            "unemploymentCompensationAmount": 2120,
            "returnsWithTaxableSocialSecurityBenefits": 150,
            "taxableSocialSecurityBenefitsAmount": 2621,
            "returnsWithPartnershipNetIncome": 160,
            "partnershipNetIncomeAmount": 1832,
            "returnsWithTotalStatutoryAdjustments": 240,
            "totalStatutoryAdjustmentsAmount": 1315,
            "returnsWithEducatorExpenses": 30,
            "educatorExpensesAmount": 6,
            "returnsWithSelfEmployedRetirementPlans": 20,
            "selfEmployedRetirementPlansAmount": 303,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 80,
            "selfEmployedHealthInsuranceDeductionAmount": 466,
            "returnsWIthIraPayments": 40,
            "iraPaymentAmount": 299,
            "returnsWithStudenLoaninterestDeduction": 0,
            "studentLoaninterestDeductionAmount": 0,
            "returnsWithCharitableContributionsWithStandardDeductions": 250,
            "charitableContributionsWithStandardDeductionsAmount": 74,
            "returnsWithTotalStandardDeduction": 610,
            "standardDeductionAmount": 8916,
            "returnsWithBasicStandardDeduction": 610,
            "basicStandardDeductionAmount": 8736,
            "returnsWithAdditionalStandardDeduction": 100,
            "additionalStandardDeductionAmount": 180,
            "returnsWithItemizedDeductions": 160,
            "itemizedDeductionsAmount": 6309,
            "agiForItemizedReturnsAmount": 10110,
            "returnsWithTotalMedicalDentalDeduction": 90,
            "totalMedicalDentalDeductionAmount": 1875,
            "returnsWithStateAndLocalIncomeTaxes": 80,
            "stateAndLocalIncomeTaxesAmount": 1246,
            "returnsWIthStateAndLocalGeneralSalesTax": 70,
            "stateAndLocalGeneralSalesTaxAmount": 74,
            "returnsWithRealEstateTaxes": 120,
            "realEstateTaxesAmount": 2658,
            "returnsWithPersonalPropertyTaxes": 50,
            "personalPropertyTaxesAmount": 28,
            "returnsWithLimitedStateLocalTaxes": 160,
            "limitedStateLocalTaxesAmount": 1248,
            "returnsWithTotalTaxesPaid": 160,
            "totalTaxesPaidAmount": 1233,
            "returnsWithHomeMortageInterestPaid": 90,
            "homeMortgageInterestPaidAmount": 1986,
            "returnsWithHomeMortgageFromPersonalSeller": 0,
            "homeMortgageFromPersonalSellerAmount": 0,
            "returnsWithDeductiblePoints": 0,
            "deductiblePointsAmount": 0,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 30,
            "investmentInterestPaidAmount": 199,
            "returnsWithTotalCharitableContributions": 120,
            "totalCharitableContributionsAmount": 871,
            "returnsWithOtherNonLimitedMiscDeductions": 40,
            "otherNonLimitedMiscDeductionsAmount": 218,
            "returnsWithQualifiedBusinessIncomeDeduction": 280,
            "qualifiedBusinessIncomeDeductionAmount": 1145,
            "returnsWithTaxableIncome": 750,
            "taxableIncomeAmount": 32066,
            "returnsWithIncomeTaxBeforeCredits": 730,
            "incomeTaxBeforeCreditsAmount": 3854,
            "returnsWithAlternativeMinimumTax": 0,
            "alternativeMinimumTaxAmount": 0,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 40,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 57,
            "returnsWithTotalTaxCredits": 220,
            "totalTaxCreditsAmount": 195,
            "returnsWithForeignTaxCredit": 120,
            "foreignTaxCreditAmount": 39,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 60,
            "nonRefundableEducationCreditAmount": 87,
            "returnsWithRetirementSavingsContributionCredit": 0,
            "retirementSavingsContributionCreditAmount": 0,
            "returnsWithChildAndOtherDependentCredit": 50,
            "childAndOtherDependentCreditAmount": 42,
            "returnsWithResidentialEnergyTaxCredit": 0,
            "residentialEnergyTaxCreditAmount": 0,
            "returnsWithSelfEmploymentTax": 180,
            "selfEmploymentTaxAmount": 831,
            "returnsWithTotalPremiumTaxCredit": 60,
            "totalPremiumTaxCreditAmount": 422,
            "returnsWithAdvancePremiumTaxCredit": 80,
            "advancePremiumTaxCreditAmount": 435,
            "returnsWithTotalTaxPayments": 670,
            "totalTaxPaymentsAmount": 5680,
            "returnsWithEarnedIncomeCredit": 0,
            "earnedIncomeCreditAmount": 0,
            "returnsWithExcessEarnedIncomeCredit": 0,
            "excessEarnedIncomeCreditAmount": 0,
            "returnsWithAdditionalChildTaxCredit": 50,
            "additionalChildTaxCreditAmount": 130,
            "returnsWithRefundableEducationCredit": 40,
            "refundableEducationCreditAmount": 39,
            "returnsWithNetPremiumTaxCredit": 50,
            "netPremiumTaxCreditAmount": 79,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount": 0,
            "returnsWithRefundableChildAndDependentCredit": 0,
            "refundableChildAndDependentCareCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 0,
            "returnsWithRecoveryRebateCredit": 60,
            "recoveryRebateCreditAmount": 79,
            "returnsWithEconomicImpactPaymentFirstRound": 660,
            "economicImpactPaymentFirstRoundAmount": 1244,
            "returnsWitheconomicImpactPaymentSecondRound": 720,
            "economicImpactPaymentSecondRoundAmount": 3660,
            "returnsWithIncomeTaxAfterCredits": 730,
            "incomeTaxAfterCreditAmount": 4533,
            "returnsWithTaxLiability": 0,
            "taxLiabilityAmount": 0,
            "returnsWithAdditionalMedicareTax": 0,
            "additionalMedicareTaxAmount": 0,
            "returnsWithNetInvestmentIncomeTax": 330,
            "netInvestmentIncomeTaxAmount": 1310,
            "returnsWithTaxDueAtTimeOfFiling": 420,
            "taxDueAtTimeOfFilingAmount": 2445,
            "returnsWithOverpaymentsRefunded": 330,
            "overpaymentRefundedAmount": 1082,
            "returnsWithCreditToNextYearTax": 110,
            "creditToNextYearTaxAmount": 785
        },
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "4",
            "agiGroup": "$75,000 under $100,000",
            "returns": 580,
            "singleReturns": 380,
            "jointReturns": 130,
            "headOfHouseholdReturns": 40,
            "electronicallyFilledReturns": 530,
            "computerPreparedPaperReturns": 30,
            "returnsWithPaidPreparedSignature": 480,
            "returnsWithDirectDeposit": 170,
            "returnsWithVirtualCurrency": 50,
            "numberOfIndividuals": 850,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 0,
            "elderlyReturns": 200,
            "adjustedGrossIncome": 50044,
            "returnsWithTotalIncome": 580,
            "totalIncomeAmount": 51500,
            "returnsWithSalariesWages": 370,
            "salariesWagesAmount": 27281,
            "returnsWithTaxableinterest": 320,
            "taxableinterestAmount": 1139,
            "returnsWithOrdinaryDividends": 290,
            "ordinaryDividendsAmount": 2798,
            "returnsWithQualifiedDividends": 270,
            "qualifiedDividendsAmount": 1708,
            "returnsStateLocalIncomeTaxRefunds": 30,
            "stateLocalIncomeTaxRefundAmount": 50,
            "returnsWithBusinessOrProfessionalNetIncome": 150,
            "businessOrProfessionalNetIncomeAmount": 4208,
            "returnsWithNetCapitalGain": 300,
            "netCapitalGainAmount": 5798,
            "returnsWithTaxableIraDistributions": 80,
            "taxableIradistributionAmount": 2336,
            "returnsWithTaxablePensionsAnnuities": 70,
            "taxablePensionsAndAnnuitiesAmount": 2144,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 80,
            "unemploymentCompensationAmount": 1201,
            "returnsWithTaxableSocialSecurityBenefits": 160,
            "taxableSocialSecurityBenefitsAmount": 3280,
            "returnsWithPartnershipNetIncome": 160,
            "partnershipNetIncomeAmount": -206,
            "returnsWithTotalStatutoryAdjustments": 160,
            "totalStatutoryAdjustmentsAmount": 1456,
            "returnsWithEducatorExpenses": 0,
            "educatorExpensesAmount": 0,
            "returnsWithSelfEmployedRetirementPlans": 0,
            "selfEmployedRetirementPlansAmount": 0,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 60,
            "selfEmployedHealthInsuranceDeductionAmount": 561,
            "returnsWIthIraPayments": 0,
            "iraPaymentAmount": 0,
            "returnsWithStudenLoaninterestDeduction": 20,
            "studentLoaninterestDeductionAmount": 17,
            "returnsWithCharitableContributionsWithStandardDeductions": 190,
            "charitableContributionsWithStandardDeductionsAmount": 59,
            "returnsWithTotalStandardDeduction": 400,
            "standardDeductionAmount": 6131,
            "returnsWithBasicStandardDeduction": 400,
            "basicStandardDeductionAmount": 5989,
            "returnsWithAdditionalStandardDeduction": 80,
            "additionalStandardDeductionAmount": 142,
            "returnsWithItemizedDeductions": 170,
            "itemizedDeductionsAmount": 7788,
            "agiForItemizedReturnsAmount": 15327,
            "returnsWithTotalMedicalDentalDeduction": 90,
            "totalMedicalDentalDeductionAmount": 2441,
            "returnsWithStateAndLocalIncomeTaxes": 110,
            "stateAndLocalIncomeTaxesAmount": 1287,
            "returnsWIthStateAndLocalGeneralSalesTax": 70,
            "stateAndLocalGeneralSalesTaxAmount": 91,
            "returnsWithRealEstateTaxes": 140,
            "realEstateTaxesAmount": 3017,
            "returnsWithPersonalPropertyTaxes": 70,
            "personalPropertyTaxesAmount": 40,
            "returnsWithLimitedStateLocalTaxes": 170,
            "limitedStateLocalTaxesAmount": 1490,
            "returnsWithTotalTaxesPaid": 170,
            "totalTaxesPaidAmount": 1484,
            "returnsWithHomeMortageInterestPaid": 120,
            "homeMortgageInterestPaidAmount": 2580,
            "returnsWithHomeMortgageFromPersonalSeller": 0,
            "homeMortgageFromPersonalSellerAmount": 0,
            "returnsWithDeductiblePoints": 0,
            "deductiblePointsAmount": 0,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 40,
            "investmentInterestPaidAmount": 363,
            "returnsWithTotalCharitableContributions": 140,
            "totalCharitableContributionsAmount": 717,
            "returnsWithOtherNonLimitedMiscDeductions": 0,
            "otherNonLimitedMiscDeductionsAmount": 0,
            "returnsWithQualifiedBusinessIncomeDeduction": 250,
            "qualifiedBusinessIncomeDeductionAmount": 1248,
            "returnsWithTaxableIncome": 560,
            "taxableIncomeAmount": 35534,
            "returnsWithIncomeTaxBeforeCredits": 550,
            "incomeTaxBeforeCreditsAmount": 5030,
            "returnsWithAlternativeMinimumTax": 0,
            "alternativeMinimumTaxAmount": 0,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 30,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 62,
            "returnsWithTotalTaxCredits": 180,
            "totalTaxCreditsAmount": 151,
            "returnsWithForeignTaxCredit": 120,
            "foreignTaxCreditAmount": 56,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 20,
            "nonRefundableEducationCreditAmount": 27,
            "returnsWithRetirementSavingsContributionCredit": 0,
            "retirementSavingsContributionCreditAmount": 0,
            "returnsWithChildAndOtherDependentCredit": 40,
            "childAndOtherDependentCreditAmount": 35,
            "returnsWithResidentialEnergyTaxCredit": 0,
            "residentialEnergyTaxCreditAmount": 0,
            "returnsWithSelfEmploymentTax": 130,
            "selfEmploymentTaxAmount": 788,
            "returnsWithTotalPremiumTaxCredit": 30,
            "totalPremiumTaxCreditAmount": 203,
            "returnsWithAdvancePremiumTaxCredit": 40,
            "advancePremiumTaxCreditAmount": 259,
            "returnsWithTotalTaxPayments": 510,
            "totalTaxPaymentsAmount": 6397,
            "returnsWithEarnedIncomeCredit": 0,
            "earnedIncomeCreditAmount": 0,
            "returnsWithExcessEarnedIncomeCredit": 0,
            "excessEarnedIncomeCreditAmount": 0,
            "returnsWithAdditionalChildTaxCredit": 60,
            "additionalChildTaxCreditAmount": 173,
            "returnsWithRefundableEducationCredit": 0,
            "refundableEducationCreditAmount": 0,
            "returnsWithNetPremiumTaxCredit": 0,
            "netPremiumTaxCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount": 0,
            "returnsWithRefundableChildAndDependentCredit": 0,
            "refundableChildAndDependentCareCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 0,
            "returnsWithRecoveryRebateCredit": 30,
            "recoveryRebateCreditAmount": 78,
            "returnsWithEconomicImpactPaymentFirstRound": 440,
            "economicImpactPaymentFirstRoundAmount": 929,
            "returnsWitheconomicImpactPaymentSecondRound": 540,
            "economicImpactPaymentSecondRoundAmount": 4878,
            "returnsWithIncomeTaxAfterCredits": 550,
            "incomeTaxAfterCreditAmount": 5723,
            "returnsWithTaxLiability": 0,
            "taxLiabilityAmount": 0,
            "returnsWithAdditionalMedicareTax": 0,
            "additionalMedicareTaxAmount": 0,
            "returnsWithNetInvestmentIncomeTax": 260,
            "netInvestmentIncomeTaxAmount": 1442,
            "returnsWithTaxDueAtTimeOfFiling": 310,
            "taxDueAtTimeOfFilingAmount": 2104,
            "returnsWithOverpaymentsRefunded": 230,
            "overpaymentRefundedAmount": 1367,
            "returnsWithCreditToNextYearTax": 90,
            "creditToNextYearTaxAmount": 737
        },
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "5",
            "agiGroup": "$100,000 under $200,000",
            "returns": 1360,
            "singleReturns": 720,
            "jointReturns": 510,
            "headOfHouseholdReturns": 80,
            "electronicallyFilledReturns": 1250,
            "computerPreparedPaperReturns": 60,
            "returnsWithPaidPreparedSignature": 1160,
            "returnsWithDirectDeposit": 340,
            "returnsWithVirtualCurrency": 120,
            "numberOfIndividuals": 2320,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 30,
            "elderlyReturns": 560,
            "adjustedGrossIncome": 195629,
            "returnsWithTotalIncome": 1360,
            "totalIncomeAmount": 200107,
            "returnsWithSalariesWages": 900,
            "salariesWagesAmount": 96896,
            "returnsWithTaxableinterest": 920,
            "taxableinterestAmount": 6105,
            "returnsWithOrdinaryDividends": 720,
            "ordinaryDividendsAmount": 11304,
            "returnsWithQualifiedDividends": 680,
            "qualifiedDividendsAmount": 7838,
            "returnsStateLocalIncomeTaxRefunds": 80,
            "stateLocalIncomeTaxRefundAmount": 160,
            "returnsWithBusinessOrProfessionalNetIncome": 320,
            "businessOrProfessionalNetIncomeAmount": 11014,
            "returnsWithNetCapitalGain": 790,
            "netCapitalGainAmount": 25373,
            "returnsWithTaxableIraDistributions": 250,
            "taxableIradistributionAmount": 9874,
            "returnsWithTaxablePensionsAnnuities": 190,
            "taxablePensionsAndAnnuitiesAmount": 9225,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 160,
            "unemploymentCompensationAmount": 3059,
            "returnsWithTaxableSocialSecurityBenefits": 410,
            "taxableSocialSecurityBenefitsAmount": 10770,
            "returnsWithPartnershipNetIncome": 570,
            "partnershipNetIncomeAmount": 11293,
            "returnsWithTotalStatutoryAdjustments": 420,
            "totalStatutoryAdjustmentsAmount": 4478,
            "returnsWithEducatorExpenses": 0,
            "educatorExpensesAmount": 0,
            "returnsWithSelfEmployedRetirementPlans": 30,
            "selfEmployedRetirementPlansAmount": 652,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 200,
            "selfEmployedHealthInsuranceDeductionAmount": 2044,
            "returnsWIthIraPayments": 50,
            "iraPaymentAmount": 404,
            "returnsWithStudenLoaninterestDeduction": 0,
            "studentLoaninterestDeductionAmount": 0,
            "returnsWithCharitableContributionsWithStandardDeductions": 410,
            "charitableContributionsWithStandardDeductionsAmount": 146,
            "returnsWithTotalStandardDeduction": 770,
            "standardDeductionAmount": 13349,
            "returnsWithBasicStandardDeduction": 770,
            "basicStandardDeductionAmount": 12949,
            "returnsWithAdditionalStandardDeduction": 200,
            "additionalStandardDeductionAmount": 400,
            "returnsWithItemizedDeductions": 590,
            "itemizedDeductionsAmount": 27197,
            "agiForItemizedReturnsAmount": 87581,
            "returnsWithTotalMedicalDentalDeduction": 220,
            "totalMedicalDentalDeductionAmount": 6543,
            "returnsWithStateAndLocalIncomeTaxes": 440,
            "stateAndLocalIncomeTaxesAmount": 7906,
            "returnsWIthStateAndLocalGeneralSalesTax": 140,
            "stateAndLocalGeneralSalesTaxAmount": 211,
            "returnsWithRealEstateTaxes": 470,
            "realEstateTaxesAmount": 10288,
            "returnsWithPersonalPropertyTaxes": 210,
            "personalPropertyTaxesAmount": 154,
            "returnsWithLimitedStateLocalTaxes": 580,
            "limitedStateLocalTaxesAmount": 5455,
            "returnsWithTotalTaxesPaid": 590,
            "totalTaxesPaidAmount": 5443,
            "returnsWithHomeMortageInterestPaid": 390,
            "homeMortgageInterestPaidAmount": 8849,
            "returnsWithHomeMortgageFromPersonalSeller": 0,
            "homeMortgageFromPersonalSellerAmount": 0,
            "returnsWithDeductiblePoints": 60,
            "deductiblePointsAmount": 28,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 110,
            "investmentInterestPaidAmount": 1175,
            "returnsWithTotalCharitableContributions": 480,
            "totalCharitableContributionsAmount": 4456,
            "returnsWithOtherNonLimitedMiscDeductions": 30,
            "otherNonLimitedMiscDeductionsAmount": 354,
            "returnsWithQualifiedBusinessIncomeDeduction": 690,
            "qualifiedBusinessIncomeDeductionAmount": 6186,
            "returnsWithTaxableIncome": 1340,
            "taxableIncomeAmount": 149340,
            "returnsWithIncomeTaxBeforeCredits": 1320,
            "incomeTaxBeforeCreditsAmount": 24453,
            "returnsWithAlternativeMinimumTax": 0,
            "alternativeMinimumTaxAmount": 0,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 30,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 136,
            "returnsWithTotalTaxCredits": 470,
            "totalTaxCreditsAmount": 719,
            "returnsWithForeignTaxCredit": 330,
            "foreignTaxCreditAmount": 314,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 30,
            "nonRefundableEducationCreditAmount": 33,
            "returnsWithRetirementSavingsContributionCredit": 0,
            "retirementSavingsContributionCreditAmount": 0,
            "returnsWithChildAndOtherDependentCredit": 130,
            "childAndOtherDependentCreditAmount": 142,
            "returnsWithResidentialEnergyTaxCredit": 0,
            "residentialEnergyTaxCreditAmount": 0,
            "returnsWithSelfEmploymentTax": 280,
            "selfEmploymentTaxAmount": 2079,
            "returnsWithTotalPremiumTaxCredit": 50,
            "totalPremiumTaxCreditAmount": 371,
            "returnsWithAdvancePremiumTaxCredit": 60,
            "advancePremiumTaxCreditAmount": 445,
            "returnsWithTotalTaxPayments": 1260,
            "totalTaxPaymentsAmount": 28783,
            "returnsWithEarnedIncomeCredit": 0,
            "earnedIncomeCreditAmount": 0,
            "returnsWithExcessEarnedIncomeCredit": 0,
            "excessEarnedIncomeCreditAmount": 0,
            "returnsWithAdditionalChildTaxCredit": 180,
            "additionalChildTaxCreditAmount": 469,
            "returnsWithRefundableEducationCredit": 20,
            "refundableEducationCreditAmount": 15,
            "returnsWithNetPremiumTaxCredit": 30,
            "netPremiumTaxCreditAmount": 56,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount": 0,
            "returnsWithRefundableChildAndDependentCredit": 30,
            "refundableChildAndDependentCareCreditAmount": 86,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 0,
            "returnsWithRecoveryRebateCredit": 60,
            "recoveryRebateCreditAmount": 162,
            "returnsWithEconomicImpactPaymentFirstRound": 720,
            "economicImpactPaymentFirstRoundAmount": 1863,
            "returnsWitheconomicImpactPaymentSecondRound": 1300,
            "economicImpactPaymentSecondRoundAmount": 23734,
            "returnsWithIncomeTaxAfterCredits": 1310,
            "incomeTaxAfterCreditAmount": 26084,
            "returnsWithTaxLiability": 50,
            "taxLiabilityAmount": 37,
            "returnsWithAdditionalMedicareTax": 30,
            "additionalMedicareTaxAmount": 33,
            "returnsWithNetInvestmentIncomeTax": 660,
            "netInvestmentIncomeTaxAmount": 5665,
            "returnsWithTaxDueAtTimeOfFiling": 680,
            "taxDueAtTimeOfFilingAmount": 8312,
            "returnsWithOverpaymentsRefunded": 430,
            "overpaymentRefundedAmount": 3802,
            "returnsWithCreditToNextYearTax": 300,
            "creditToNextYearTaxAmount": 4510
        },
        {
            "zipCode": "90210",
            "year": 2021,
            "agiGroupId": "6",
            "agiGroup": "$200,000 or more",
            "returns": 3690,
            "singleReturns": 1010,
            "jointReturns": 2410,
            "headOfHouseholdReturns": 130,
            "electronicallyFilledReturns": 3440,
            "computerPreparedPaperReturns": 160,
            "returnsWithPaidPreparedSignature": 3500,
            "returnsWithDirectDeposit": 440,
            "returnsWithVirtualCurrency": 270,
            "numberOfIndividuals": 8320,
            "volunteerPreparedReturns": 0,
            "vitaPreparedReturns": 0,
            "tcePreparedReturns": 0,
            "eicVolunteerPreparedReturns": 0,
            "refundAnticipationCheckReturns": 0,
            "elderlyReturns": 1970,
            "adjustedGrossIncome": 6895478,
            "returnsWithTotalIncome": 3690,
            "totalIncomeAmount": 6952909,
            "returnsWithSalariesWages": 2560,
            "salariesWagesAmount": 1480370,
            "returnsWithTaxableinterest": 3270,
            "taxableinterestAmount": 137973,
            "returnsWithOrdinaryDividends": 2800,
            "ordinaryDividendsAmount": 427992,
            "returnsWithQualifiedDividends": 2680,
            "qualifiedDividendsAmount": 342569,
            "returnsStateLocalIncomeTaxRefunds": 110,
            "stateLocalIncomeTaxRefundAmount": 747,
            "returnsWithBusinessOrProfessionalNetIncome": 960,
            "businessOrProfessionalNetIncomeAmount": 159197,
            "returnsWithNetCapitalGain": 2990,
            "netCapitalGainAmount": 2587283,
            "returnsWithTaxableIraDistributions": 840,
            "taxableIradistributionAmount": 96512,
            "returnsWithTaxablePensionsAnnuities": 640,
            "taxablePensionsAndAnnuitiesAmount": 55520,
            "returnsFarms": 0,
            "returnsWithUnemploymentCompensation": 190,
            "unemploymentCompensationAmount": 2761,
            "returnsWithTaxableSocialSecurityBenefits": 1310,
            "taxableSocialSecurityBenefitsAmount": 42556,
            "returnsWithPartnershipNetIncome": 2710,
            "partnershipNetIncomeAmount": 1673951,
            "returnsWithTotalStatutoryAdjustments": 1580,
            "totalStatutoryAdjustmentsAmount": 57431,
            "returnsWithEducatorExpenses": 0,
            "educatorExpensesAmount": 0,
            "returnsWithSelfEmployedRetirementPlans": 290,
            "selfEmployedRetirementPlansAmount": 19869,
            "returnsWithSelfEmployedHealthInsuranceDeduction": 840,
            "selfEmployedHealthInsuranceDeductionAmount": 14925,
            "returnsWIthIraPayments": 150,
            "iraPaymentAmount": 1613,
            "returnsWithStudenLoaninterestDeduction": 0,
            "studentLoaninterestDeductionAmount": 0,
            "returnsWithCharitableContributionsWithStandardDeductions": 700,
            "charitableContributionsWithStandardDeductionsAmount": 306,
            "returnsWithTotalStandardDeduction": 1060,
            "standardDeductionAmount": 22317,
            "returnsWithBasicStandardDeduction": 1060,
            "basicStandardDeductionAmount": 21350,
            "returnsWithAdditionalStandardDeduction": 440,
            "additionalStandardDeductionAmount": 967,
            "returnsWithItemizedDeductions": 2630,
            "itemizedDeductionsAmount": 441660,
            "agiForItemizedReturnsAmount": 6038053,
            "returnsWithTotalMedicalDentalDeduction": 260,
            "totalMedicalDentalDeductionAmount": 16526,
            "returnsWithStateAndLocalIncomeTaxes": 2430,
            "stateAndLocalIncomeTaxesAmount": 664592,
            "returnsWIthStateAndLocalGeneralSalesTax": 190,
            "stateAndLocalGeneralSalesTaxAmount": 415,
            "returnsWithRealEstateTaxes": 2360,
            "realEstateTaxesAmount": 106368,
            "returnsWithPersonalPropertyTaxes": 970,
            "personalPropertyTaxesAmount": 1147,
            "returnsWithLimitedStateLocalTaxes": 2620,
            "limitedStateLocalTaxesAmount": 26099,
            "returnsWithTotalTaxesPaid": 2630,
            "totalTaxesPaidAmount": 27956,
            "returnsWithHomeMortageInterestPaid": 1940,
            "homeMortgageInterestPaidAmount": 45108,
            "returnsWithHomeMortgageFromPersonalSeller": 80,
            "homeMortgageFromPersonalSellerAmount": 1654,
            "returnsWithDeductiblePoints": 260,
            "deductiblePointsAmount": 233,
            "returnsWithQualifiedMortgageInsurancePremiums": 0,
            "qualifiedMortgageInsurancePremiumsAmount": 0,
            "returnsWithInvestmentInterestPaid": 1080,
            "investmentInterestPaidAmount": 91665,
            "returnsWithTotalCharitableContributions": 2430,
            "totalCharitableContributionsAmount": 247005,
            "returnsWithOtherNonLimitedMiscDeductions": 370,
            "otherNonLimitedMiscDeductionsAmount": 9769,
            "returnsWithQualifiedBusinessIncomeDeduction": 2520,
            "qualifiedBusinessIncomeDeductionAmount": 218050,
            "returnsWithTaxableIncome": 3670,
            "taxableIncomeAmount": 6219814,
            "returnsWithIncomeTaxBeforeCredits": 3670,
            "incomeTaxBeforeCreditsAmount": 1706059,
            "returnsWithAlternativeMinimumTax": 240,
            "alternativeMinimumTaxAmount": 5716,
            "returnsWithExcessAdvancePremiumTaxCreditRepayment": 30,
            "excessAdvancePremiumTaxCreditRepaymentAmount": 140,
            "returnsWithTotalTaxCredits": 1900,
            "totalTaxCreditsAmount": 34255,
            "returnsWithForeignTaxCredit": 1640,
            "foreignTaxCreditAmount": 25608,
            "returnsWithChildAndDependentCareCredit": 0,
            "childAndDependentCareCreditAmount": 0,
            "returnsWithNonRefundableEducationCredit": 0,
            "nonRefundableEducationCreditAmount": 0,
            "returnsWithRetirementSavingsContributionCredit": 0,
            "retirementSavingsContributionCreditAmount": 0,
            "returnsWithChildAndOtherDependentCredit": 130,
            "childAndOtherDependentCreditAmount": 116,
            "returnsWithResidentialEnergyTaxCredit": 60,
            "residentialEnergyTaxCreditAmount": 657,
            "returnsWithSelfEmploymentTax": 1120,
            "selfEmploymentTaxAmount": 25551,
            "returnsWithTotalPremiumTaxCredit": 0,
            "totalPremiumTaxCreditAmount": 0,
            "returnsWithAdvancePremiumTaxCredit": 30,
            "advancePremiumTaxCreditAmount": 221,
            "returnsWithTotalTaxPayments": 3580,
            "totalTaxPaymentsAmount": 1928618,
            "returnsWithEarnedIncomeCredit": 0,
            "earnedIncomeCreditAmount": 0,
            "returnsWithExcessEarnedIncomeCredit": 0,
            "excessEarnedIncomeCreditAmount": 0,
            "returnsWithAdditionalChildTaxCredit": 240,
            "additionalChildTaxCreditAmount": 422,
            "returnsWithRefundableEducationCredit": 0,
            "refundableEducationCreditAmount": 0,
            "returnsWithNetPremiumTaxCredit": 0,
            "netPremiumTaxCreditAmount": 0,
            "returnsWithQualifiedSickAndFamilyLeaveCredit": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount": 0,
            "returnsWithRefundableChildAndDependentCredit": 30,
            "refundableChildAndDependentCareCreditAmount": 36,
            "returnsWithQualifiedSickAndFamilyLeaveCredit11530": 0,
            "qualifiedSickAndFamilyLeaveCreditAmount11530": 0,
            "returnsWithRecoveryRebateCredit": 0,
            "recoveryRebateCreditAmount": 0,
            "returnsWithEconomicImpactPaymentFirstRound": 590,
            "economicImpactPaymentFirstRoundAmount": 1709,
            "returnsWitheconomicImpactPaymentSecondRound": 3650,
            "economicImpactPaymentSecondRoundAmount": 1671803,
            "returnsWithIncomeTaxAfterCredits": 3690,
            "incomeTaxAfterCreditAmount": 1810055,
            "returnsWithTaxLiability": 1660,
            "taxLiabilityAmount": 12368,
            "returnsWithAdditionalMedicareTax": 2980,
            "additionalMedicareTaxAmount": 93797,
            "returnsWithNetInvestmentIncomeTax": 1630,
            "netInvestmentIncomeTaxAmount": 164179,
            "returnsWithTaxDueAtTimeOfFiling": 2050,
            "taxDueAtTimeOfFilingAmount": 280919,
            "returnsWithOverpaymentsRefunded": 620,
            "overpaymentRefundedAmount": 43208,
            "returnsWithCreditToNextYearTax": 1570,
            "creditToNextYearTaxAmount": 237711
        }
    ]
}
&lt;/pre&gt;
&lt;/p&gt;
		&lt;/div&gt;
	&lt;/section&gt;
&lt;/div&gt;

&lt;h2&gt;Conclusion: Leveraging Zip Code Data for Targeted Marketing&lt;/h2&gt;

&lt;p&gt;In a world where &lt;strong&gt;data-driven decisions&lt;/strong&gt; are key to success, &lt;strong&gt;zip code statistics&lt;/strong&gt; based on &lt;strong&gt;IRS data&lt;/strong&gt; offer a significant competitive edge. Businesses that utilize these insights can craft more personalized and effective marketing campaigns, ensuring their efforts resonate with the right audience in the right location.&lt;/p&gt;

&lt;p&gt;With the ability to access this data through an intuitive &lt;strong&gt;API&lt;/strong&gt;, companies of all sizes can now tap into the power of &lt;strong&gt;zip code statistics&lt;/strong&gt; for &lt;strong&gt;market analysis&lt;/strong&gt; and &lt;strong&gt;targeted marketing&lt;/strong&gt;. Whether you’re looking to improve customer targeting, boost ROI, or tailor your products to the needs of specific regions, leveraging IRS data is the smart way to stay ahead in today’s competitive market.&lt;/p&gt;

&lt;p&gt;Embrace the power of &lt;strong&gt;zip code statistics&lt;/strong&gt; today, and let &lt;strong&gt;IRS data&lt;/strong&gt; drive your next successful marketing campaign!&lt;/p&gt;

&lt;p&gt;This blog post introduces the immense potential of zip code statistics for business analysis, highlighting how leveraging IRS data through an API can enable smarter, targeted marketing decisions.&lt;/p&gt;
</description><guid isPermaLink="false">26</guid></item><item><title>Getting Income Statistics by Zip Code</title><link>https://www.metadapi.com/Blog/PostId/25/getting-income-statistics-by-zip-code</link><category>About the Data,Tutorials</category><pubDate>Sat, 22 Jun 2024 14:49:00 GMT</pubDate><description>&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Understanding the income statistics of specific areas can be incredibly valuable for businesses, researchers, and policymakers. Detailed income data by zip code can offer insights into economic conditions, consumer behavior, and regional disparities. Thanks to the Zip Code API by Metadapi, getting access to detailed statistics and utilizing this data has never been easier. In this blog post, we'll explore how to obtain income statistics by zip code, highlight some sample use cases, and delve into one detailed use case to illustrate its practical application.&lt;/p&gt;

&lt;h2&gt;Understanding Income Statistics API&lt;/h2&gt;

&lt;p&gt;The statistics of income endpoint from the Zip Code API offer a wealth of data, including median household income, per capita income, income distribution, total returns, and much more (Over 160 data points). This API reconciles data from the "Individual Income Tax Statistics" dataset provided by the &lt;a href="http://irs.gov" target="_blank"&gt;IRS&lt;/a&gt;.  We provide a consolidated view into this dataset to ensure accuracy and comprehensiveness. By using this API, users can easily integrate income statistics data into their applications, websites, or research projects.&lt;/p&gt;

&lt;h2&gt;Sample Use Cases for Income Statistics by Zip Code&lt;/h2&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Business Market Analysis&lt;/strong&gt;: Businesses can use income data to identify potential markets, tailor marketing strategies, and make informed decisions about store locations.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Real Estate Investment&lt;/strong&gt;: Real estate investors can assess neighborhood affluence to determine property values and investment potential.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Public Policy and Planning&lt;/strong&gt;: Policymakers can analyze income disparities across regions to allocate resources and design programs aimed at reducing poverty.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Academic Research&lt;/strong&gt;: Researchers can study the correlation between income levels and various social factors, such as education and health outcomes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Nonprofit Fundraising&lt;/strong&gt;: Nonprofit organizations can identify areas with lower income levels to target for fundraising and outreach programs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Detailed Use Case: Business Market Analysis&lt;/h2&gt;

&lt;p&gt;Let's dive deeper into how a retail business might use income statistics by zip code to enhance its market analysis and decision-making process.&lt;/p&gt;

&lt;h3&gt;Scenario: Opening a New Retail Store&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: A retail chain wants to open a new store in a metropolitan area. They need to determine the best location based on the income levels of different neighborhoods to ensure profitability and sustainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Identify Potential Locations&lt;/strong&gt;: The business identifies several zip codes in the metropolitan area where they might open the new store.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Retrieve Income Data&lt;/strong&gt;: Using an income statistics API, the business retrieves detailed income data for each identified zip code. The API provides information such as median household income, income distribution.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Analyze Data&lt;/strong&gt;: The business analyzes the retrieved data to compare the economic conditions of the different zip codes. They focus on metrics such as higher median household income and lower poverty rates, which indicate greater purchasing power and economic stability.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Determine Target Demographics&lt;/strong&gt;: The business identifies the target demographics that align with their products and services. For example, if they sell high-end electronics, they might prioritize areas with higher income levels.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Make Informed Decision&lt;/strong&gt;: Based on the income data analysis, the business selects the zip code with the most favorable economic conditions for their new store. They also use the data to tailor their marketing strategies, such as offering promotions that appeal to higher-income customers.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Monitor and Adjust&lt;/strong&gt;: After opening the store, the business continues to monitor income data and other economic indicators. They use this ongoing data analysis to adjust their strategies and operations to maximize profitability.&lt;/li&gt;
&lt;/ol&gt;

&lt;div&gt;As an example, let's use the following Python code to extract and save into a csv file the number of returns and wages for 3 zip codes.&lt;/div&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;span dir="rtl"&gt;&lt;/span&gt;
&lt;p&gt;import requests&lt;br /&gt;
import csv&lt;/p&gt;

&lt;p&gt;zips = ['33009','33967','90210']&lt;br /&gt;
file = r'&lt;&lt;path file="" here="" to="" your=""&gt;&gt;'&lt;/path&gt;&lt;/p&gt;

&lt;p&gt;def fetch_data_from_api(zipCode):&lt;br /&gt;
    #Replace the string &lt;your api="" key=""&gt; with a valid metadapi.com API key.&lt;br /&gt;
    vheaders = {"Ocp-Apim-Subscription-Key": "&lt;&lt;your api="" key=""&gt;&gt;"} &lt;br /&gt;
    url = f"https://global.metadapi.com/zipc/v1/zipcodes/{zipCode}/soi"&lt;br /&gt;
    response = requests.get(url,headers=vheaders)    &lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()&lt;br /&gt;
    else:&lt;br /&gt;
        print(f"Failed to fetch data. Status code: {response.status_code}")&lt;br /&gt;
        return None&lt;br /&gt;
    &lt;/your&gt;&lt;/your&gt;&lt;/p&gt;

&lt;p&gt;def main():&lt;br /&gt;
    with open(file, 'w', newline='') as zipfile:&lt;br /&gt;
        writer = csv.writer(zipfile)&lt;br /&gt;
        header = ['zipCode', 'year', 'agiGroupId', 'returns', 'salariesWagesAmount']&lt;br /&gt;
        writer.writerow(header)&lt;br /&gt;
        for zip in zips :&lt;br /&gt;
            try: &lt;br /&gt;
                response_api_data = fetch_data_from_api(zip)&lt;br /&gt;
                print('called api with success')&lt;br /&gt;
                for data in response_api_data['data']:&lt;br /&gt;
                    row = [data['zipCode'], data['year'], data['agiGroupId'], data['returns'],data['salariesWagesAmount']]&lt;br /&gt;
                    writer.writerow(row)&lt;br /&gt;
            except: &lt;br /&gt;
                print('There was an exception calling the API.')&lt;/p&gt;

&lt;p&gt;if __name__ == "__main__":&lt;br /&gt;
    main()&lt;/p&gt;
&lt;span dir="rtl"&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;This code will save a csv file with the returns and wages for the zip code provided.   Check out the full &lt;a href="https://metadapi.stoplight.io/docs/api/vkxe12hqq18vn-zip-code-soi" target="_blank"&gt;zip code statistics of income schema&lt;/a&gt; and take advantage of the hundreds of data elements available for analysis and application development. &lt;/div&gt;

&lt;div&gt;Using your favorite data reporting tool (Excel, PowerBI, Tableau, etc.) create a visualization that will help in your analysis of the extracted data.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;img alt="Graph with wages by zip code" src="/Portals/0/Images/ZipCode/zip-code-soi-graph.png?ver=-YMnyzDaVZHeuZQHgiTyDw%3d%3d" style="width: 1023px; height: 810px;" /&gt;&lt;/div&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Income statistics by zip code provide a granular view of economic conditions, enabling businesses, policymakers, and researchers to make data-driven decisions. By leveraging the &lt;a href="/API-Products/Zip-Code-API"&gt;Zip Code API&lt;/a&gt; that offers detailed income data, users can gain valuable insights into local economies, tailor their strategies, and achieve their objectives more effectively. Whether you're opening a new store, investing in real estate, or designing public policies, understanding income statistics at the zip code level can significantly enhance your decision-making process.&lt;/p&gt;
</description><guid isPermaLink="false">25</guid></item><item><title>Maximizing Efficiency: Calling APIs in Parallel</title><link>https://www.metadapi.com/Blog/PostId/23/maximizing-efficiency-calling-apis-in-parallel</link><category>Tutorials</category><pubDate>Wed, 17 Apr 2024 23:53:53 GMT</pubDate><description>&lt;h3&gt;Understanding Parallel API Calls &lt;/h3&gt;

&lt;p&gt;Traditionally, API calls are executed sequentially, meaning that each call is made one after the other, with subsequent calls waiting for the previous one to complete. While this approach may suffice for small-scale applications, it can lead to significant performance bottlenecks as the number of API calls increases. &lt;/p&gt;

&lt;p&gt;Parallel API calls, on the other hand, involve making multiple API requests concurrently, allowing them to execute simultaneously. This approach harnesses the full potential of modern computing systems, significantly reducing the overall latency and improving throughput. &lt;/p&gt;

&lt;h3&gt;Example Use Cases &lt;/h3&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Fetching Data from Multiple Sources&lt;/strong&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;br /&gt;
	Imagine you're building a data aggregation platform that gathers information from various external APIs. Instead of waiting for each API call to finish sequentially, you can execute them in parallel. This approach minimizes the time required to collect the data, providing users with real-time or near-real-time updates. &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Processing Large Datasets:&lt;/strong&gt;&lt;br /&gt;
	When dealing with large datasets that require extensive processing, parallel API calls can significantly expedite the task. For instance, in data analysis applications, you may need to retrieve data from multiple sources, perform computations, and then consolidate the results. By making concurrent API calls, you can distribute the workload across multiple threads or processes, accelerating the overall processing time. &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Microservices Architecture:&lt;/strong&gt;&lt;br /&gt;
	In microservices-based architectures, where applications are composed of loosely-coupled, independently deployable services, parallel API calls are instrumental. Each microservice often relies on several other services to fulfill its functionalities. By making concurrent API requests, microservices can operate more autonomously, reducing dependencies and improving overall system resilience. &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Web Scraping and Crawling:&lt;/strong&gt; Web scraping and crawling applications often require fetching data from numerous web pages or APIs. Parallel API calls enable faster data retrieval, enabling developers to harvest large amounts of information efficiently. Whether it's monitoring competitors' prices, gathering news articles, or extracting product details, parallelization can significantly enhance the performance of web scraping tasks. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Implementing Parallel API Calls &lt;/h3&gt;

&lt;p&gt;Implementing parallel API calls involves leveraging concurrency mechanisms provided by programming languages or frameworks. Python, for instance, offers libraries such as `concurrent.futures` and `asyncio`, which facilitate concurrent execution of tasks. &lt;/p&gt;

&lt;p&gt;Below is an example demonstrating how to call APIs in parallel using Python's `concurrent.futures` module: &lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;
&lt;pre&gt;
import requests
import concurrent.futures

# Function to fetch description for a single zipcode
def fetch_description(vzipcode):
    vheaders = {"Ocp-Apim-Subscription-Key": "&lt;YOUR API KEY&gt;"} #CHANGE TO INCLUDE API KEY PROVIDED BY METADAPI.COM
    url = f"https://global.metadapi.com/zipc/v1/zipcodes/{vzipcode}"
    response = requests.get(url, headers=vheaders)
    if response.status_code == 200:
        return response.json()
    else:
        return None

# Function to process codes in parallel
def process_codes_in_parallel(zipcodes):
    descriptions = []
    with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
        future_to_code = {executor.submit(fetch_description, zipcode): zipcode for zipcode in zipcodes}
        for future in concurrent.futures.as_completed(future_to_code):
            zipcode = future_to_code[future]
            try:
                description = future.result()
                if description:
                    descriptions.append(description)
            except Exception as e:
                print(f"Failed to fetch description for code {zipcode}: {e}")
    return descriptions

# Read codes from a file
def read_codes_from_file(filename):
    with open(filename, 'r') as file:
        zipcodes = [line.strip() for line in file]
    return zipcodes

# Main function
def main():
    filename = r'sample-zips.txt'  #CHANGE TO INCLUDE PATH AND FILE NAME IN LOCAL ENVIRONMENT
    zipcodes = read_codes_from_file(filename)
    
    # Process codes in chunks
    chunk_size = 2
    for i in range(0, len(zipcodes), chunk_size):
        chunk = zipcodes[i:i+chunk_size]
        descriptions = process_codes_in_parallel(chunk)
        print(descriptions)  # Do whatever you want with the descriptions

if __name__ == "__main__":
    main()
&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Conclusion &lt;/h3&gt;

&lt;p&gt;Calling APIs in parallel is a powerful technique for optimizing performance and scalability in modern applications. By distributing workloads across multiple concurrent tasks, developers can reduce latency, improve throughput, and enhance the overall user experience. Whether it's aggregating data from disparate sources, processing large datasets, or building resilient microservices architectures, parallel API calls offer a robust solution to meet the demands of today's interconnected world.&lt;/p&gt;
</description><guid isPermaLink="false">23</guid></item><item><title>MSA Codes by Zip Code for Targeted Data Insights</title><link>https://www.metadapi.com/Blog/PostId/22/msa-codes-by-zip-code-for-targeted-data-insights</link><category>About the Data</category><pubDate>Sat, 02 Mar 2024 20:20:58 GMT</pubDate><description>&lt;h2&gt;Understanding MSA - Metropolitan Statistical Area&lt;/h2&gt;

&lt;p&gt;In the context of statistical areas, &lt;strong&gt;MSA stands for Metropolitan Statistical Area&lt;/strong&gt;, and it is a designation used by the U.S. Office of Management and Budget (OMB) for a geographical region with a relatively high population density at its core and close economic ties throughout the area. MSAs are commonly used for statistical and economic analysis.&lt;/p&gt;

&lt;p&gt;The following concepts are important to understand how these work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metropolitan Statistical Area (MSA):&lt;/strong&gt;&lt;br /&gt;
   - Purpose: The primary purpose of an MSA is to define and delineate metropolitan regions for statistical and administrative purposes. MSAs help in understanding and analyzing demographic, economic, and social trends within urban areas and their surrounding regions.&lt;/p&gt;

&lt;p&gt;   - Criteria: MSAs are defined based on factors such as population density, commuting patterns, and economic integration. A core urban area with a certain population size and strong economic ties to surrounding counties may be designated as an MSA.&lt;/p&gt;

&lt;p&gt;   - Components: An MSA typically consists of a central city or cities and surrounding counties that are economically and socially integrated with the urban core.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Micro Statistical Area (μSA):&lt;/strong&gt;&lt;br /&gt;
   - Purpose: Micro Statistical Areas are smaller geographical areas that are also designated by the OMB for statistical and administrative purposes. They are similar to MSAs but represent smaller urban clusters.&lt;/p&gt;

&lt;p&gt;   - Criteria: The criteria for defining Micro Statistical Areas are similar to those for MSAs but with lower population thresholds. They are areas with a core urban center and adjacent counties that exhibit economic and social ties to the urban core.&lt;/p&gt;

&lt;p&gt;   - Components: A Micro Statistical Area includes a core urban area and its closely associated counties, similar to an MSA but on a smaller scale.&lt;/p&gt;

&lt;p&gt;In summary, both MSAs and Micro Statistical Areas are designed to provide a framework for analyzing and understanding demographic, economic, and social trends in urban and surrounding regions. MSAs are larger and encompass major metropolitan regions, while Micro Statistical Areas are smaller clusters with similar characteristics. These designations facilitate consistent and standardized reporting and analysis of data at different geographic scales.&lt;/p&gt;

&lt;h2&gt;MSA Use Cases&lt;/h2&gt;

&lt;p&gt;The &lt;a href="/API-Directory/Zip-Code-API"&gt;US Zip Code API&lt;/a&gt; by &lt;a href="www.metadapi.com"&gt;Metadapi&lt;/a&gt;, can return all zip codes associated with a Metropolitan Statistical Area (MSA). This dataset can be valuable for various use cases, enabling developers and businesses to leverage the geographic and demographic information tied to specific urban regions. Here are some potential use cases:&lt;/p&gt;

&lt;p&gt;1. Targeted Marketing Campaigns:&lt;br /&gt;
   - Businesses can use the zip code information to target their marketing campaigns more effectively. They can tailor promotions, advertisements, and communications specifically for residents within the identified MSA.&lt;/p&gt;

&lt;p&gt;2. Localized Services and Retail Planning:&lt;br /&gt;
   - Retailers and service providers can use the zip code data to plan and optimize their locations. Understanding the distribution of zip codes within an MSA helps in selecting suitable locations for stores, offices, or service centers.&lt;/p&gt;

&lt;p&gt;3. Demographic Analysis:&lt;br /&gt;
   - Researchers and analysts can use the zip code information to conduct demographic studies within an MSA. This includes understanding population density, income levels, and other socio-economic factors associated with specific zip codes.&lt;/p&gt;

&lt;p&gt;4. Real Estate and Property Analysis:&lt;br /&gt;
   - The API can be utilized by real estate professionals to assess property trends and demand in different zip codes within an MSA. It can aid in making informed decisions regarding property investments, development, and pricing strategies.&lt;/p&gt;

&lt;p&gt;5. Logistics and Delivery Optimization:&lt;br /&gt;
   - Companies involved in logistics and delivery services can optimize their routes and operations by understanding the distribution of zip codes within an MSA. This can lead to more efficient delivery schedules and reduced operational costs.&lt;/p&gt;

&lt;p&gt;6. Social and Community Services Planning:&lt;br /&gt;
   - Government agencies and non-profit organizations can use the zip code data to plan and allocate resources for social and community services. Understanding the geographic distribution helps in identifying areas with specific needs.&lt;/p&gt;

&lt;p&gt;7. Insurance and Risk Assessment:&lt;br /&gt;
   - Insurance companies can utilize the information to assess risk factors associated with different zip codes within an MSA. This can be beneficial in determining insurance premiums and managing risk portfolios.&lt;/p&gt;

&lt;p&gt;8. Education Planning:&lt;br /&gt;
   - Educational institutions and policymakers can analyze zip code data to plan educational programs and resource allocation. It helps in understanding the distribution of student populations and educational needs within an MSA.&lt;/p&gt;

&lt;p&gt;9. Travel and Tourism Planning:&lt;br /&gt;
   - The zip code data can be used in the travel and tourism industry to plan marketing strategies and identify areas of interest within an MSA. This can help in promoting local attractions and services.&lt;/p&gt;

&lt;p&gt;10. Emergency Services Planning:&lt;br /&gt;
    - Emergency services can benefit from understanding the distribution of population across zip codes within an MSA. This information can aid in disaster response planning, resource allocation, and emergency services optimization.&lt;/p&gt;

&lt;h2&gt;Sample API calls&lt;/h2&gt;

&lt;p&gt;All zip codes for the Dallas-Fort Worth-Arlington metropolitan area&lt;/p&gt;

&lt;p&gt;You can view a list of MSA Codes in Texas by using the Get MSA Groups endpoint. &lt;/p&gt;

&lt;p&gt;&lt;span class="badge badge-success"&gt;GET&lt;/span&gt; &lt;code&gt;https://global.metadapi.com/zipc/v2/msagroups?statecode=tx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The MSA code for the Dallas-Fort Worth-Arlington is 19100, we use this to get a full list of zip codes in that metropolitan area:&lt;/p&gt;

&lt;p&gt;&lt;span class="badge badge-success"&gt;GET&lt;/span&gt; &lt;code&gt;https://global.metadapi.com/zipc/v2/zipcodes?msacode=19100&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This returns the full list of zip codes related to this MSA (409 total), for example zip codes &lt;a href="https://www.metadapi.com/us-zip-codes/75001"&gt;75001&lt;/a&gt;, &lt;a href="https://www.metadapi.com/us-zip-codes/75002"&gt;75002&lt;/a&gt;, &lt;a href="https://www.metadapi.com/us-zip-codes/75006"&gt;75006&lt;/a&gt;, &lt;a href="https://www.metadapi.com/us-zip-codes/75007"&gt;75007&lt;/a&gt;, &lt;a href="https://www.metadapi.com/us-zip-codes/75009"&gt;75009 &lt;/a&gt;and &lt;a href="https://www.metadapi.com/us-zip-codes/75010"&gt;75010&lt;/a&gt;.&lt;/p&gt;

&lt;div class="toggle toggle-primary toggle-simple" data-plugin-toggle="toggle"&gt;
&lt;section class="toggle"&gt;&lt;button class="toggle-heading" type="button"&gt;Click to see the full response&lt;/button&gt;

&lt;div class="toggle-content"&gt;
&lt;pre&gt;
{
    "links": {
        "self": "/zipc/v2/zipcodes?msacode=19100?limit=10&amp;offset=0&amp;msacode=19100",
        "first": "/zipc/v2/zipcodes?msacode=19100?limit=10&amp;offset=0&amp;msacode=19100",
        "next": "/zipc/v2/zipcodes?msacode=19100?limit=10&amp;offset=10&amp;msacode=19100"
    },
    "meta": {
        "count": 409,
        "offset": 0,
        "limit": 10
    },
    "data": [
        {
            "zipCode": "75001",
            "uspsMainCityKey": "W22681",
            "uspsMainCityName": "ADDISON",
            "titleCaseCityName": "Addison",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "D",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "480055",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": 32.96005,
            "longitude": -96.838524,
            "landAreaMi2": 3.828,
            "waterAreaMi2": 0.003,
            "landAreaKm2": 9.915172,
            "waterAreaKm2": 0.008702,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W22681",
                    "uspsCityName": "ADDISON",
                    "titleCaseCityName": "Addison",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 8259,
                    "malePopulation": 4258,
                    "femalePopulation": 4001
                },
                {
                    "year": 2010,
                    "totalPopulation": 12414,
                    "malePopulation": 6185,
                    "femalePopulation": 6229
                },
                {
                    "year": 2020,
                    "totalPopulation": 16528,
                    "malePopulation": 8148,
                    "femalePopulation": 8380
                }
            ]
        },
        {
            "zipCode": "75002",
            "uspsMainCityKey": "W22717",
            "uspsMainCityName": "ALLEN",
            "titleCaseCityName": "Allen",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "B",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "480160",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "085",
            "uspsCountyName": "COLLIN",
            "titleCaseCountyName": "Collin",
            "latitude": 33.089855,
            "longitude": -96.6086,
            "landAreaMi2": 37.2,
            "waterAreaMi2": 2.042,
            "landAreaKm2": 96.34764,
            "waterAreaKm2": 5.28926,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W22717",
                    "uspsCityName": "ALLEN",
                    "titleCaseCityName": "Allen",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                },
                {
                    "uspsCityKey": "011291",
                    "uspsCityName": "LUCAS",
                    "titleCaseCityName": "Lucas",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": false
                },
                {
                    "uspsCityKey": "013120",
                    "uspsCityName": "PARKER",
                    "titleCaseCityName": "Parker",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": false
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 37216,
                    "malePopulation": 18588,
                    "femalePopulation": 18628
                },
                {
                    "year": 2010,
                    "totalPopulation": 63140,
                    "malePopulation": 31093,
                    "femalePopulation": 32047
                },
                {
                    "year": 2020,
                    "totalPopulation": 69939,
                    "malePopulation": 34410,
                    "femalePopulation": 35529
                }
            ]
        },
        {
            "zipCode": "75006",
            "uspsMainCityKey": "W23158",
            "uspsMainCityName": "CARROLLTON",
            "titleCaseCityName": "Carrollton",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "D",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "481475",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": 32.96214,
            "longitude": -96.89858,
            "landAreaMi2": 16.801,
            "waterAreaMi2": 0.327,
            "landAreaKm2": 43.51386,
            "waterAreaKm2": 0.846029,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W23158",
                    "uspsCityName": "CARROLLTON",
                    "titleCaseCityName": "Carrollton",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 46784,
                    "malePopulation": 23353,
                    "femalePopulation": 23431
                },
                {
                    "year": 2010,
                    "totalPopulation": 46364,
                    "malePopulation": 23012,
                    "femalePopulation": 23352
                },
                {
                    "year": 2020,
                    "totalPopulation": 47811,
                    "malePopulation": 23653,
                    "femalePopulation": 24158
                }
            ]
        },
        {
            "zipCode": "75007",
            "uspsMainCityKey": "W23158",
            "uspsMainCityName": "CARROLLTON",
            "titleCaseCityName": "Carrollton",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "B",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "481475",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "121",
            "uspsCountyName": "DENTON",
            "titleCaseCountyName": "Denton",
            "latitude": 33.00526,
            "longitude": -96.89674,
            "landAreaMi2": 11.749,
            "waterAreaMi2": 0.121,
            "landAreaKm2": 30.430355,
            "waterAreaKm2": 0.31431,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W23158",
                    "uspsCityName": "CARROLLTON",
                    "titleCaseCityName": "Carrollton",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 49933,
                    "malePopulation": 24616,
                    "femalePopulation": 25317
                },
                {
                    "year": 2010,
                    "totalPopulation": 51624,
                    "malePopulation": 25189,
                    "femalePopulation": 26435
                },
                {
                    "year": 2020,
                    "totalPopulation": 53960,
                    "malePopulation": 26394,
                    "femalePopulation": 27566
                }
            ]
        },
        {
            "zipCode": "75009",
            "uspsMainCityKey": "W23189",
            "uspsMainCityName": "CELINA",
            "titleCaseCityName": "Celina",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "D",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "481585",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "085",
            "uspsCountyName": "COLLIN",
            "titleCaseCountyName": "Collin",
            "latitude": 33.338898,
            "longitude": -96.752975,
            "landAreaMi2": 95.612,
            "waterAreaMi2": 1.433,
            "landAreaKm2": 247.63293,
            "waterAreaKm2": 3.711938,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W23189",
                    "uspsCityName": "CELINA",
                    "titleCaseCityName": "Celina",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 4951,
                    "malePopulation": 2523,
                    "femalePopulation": 2428
                },
                {
                    "year": 2010,
                    "totalPopulation": 8785,
                    "malePopulation": 4385,
                    "femalePopulation": 4400
                },
                {
                    "year": 2020,
                    "totalPopulation": 21276,
                    "malePopulation": 10605,
                    "femalePopulation": 10671
                }
            ]
        },
        {
            "zipCode": "75014",
            "uspsMainCityKey": "W24197",
            "uspsMainCityName": "IRVING",
            "titleCaseCityName": "Irving",
            "zipClassificationCode": "P",
            "zipClassificationDesc": "PO Box Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "C",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "484360",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": null,
            "longitude": null,
            "landAreaMi2": null,
            "waterAreaMi2": null,
            "landAreaKm2": null,
            "waterAreaKm2": null,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W24197",
                    "uspsCityName": "IRVING",
                    "titleCaseCityName": "Irving",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": null
        },
        {
            "zipCode": "75011",
            "uspsMainCityKey": "W23158",
            "uspsMainCityName": "CARROLLTON",
            "titleCaseCityName": "Carrollton",
            "zipClassificationCode": "P",
            "zipClassificationDesc": "PO Box Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "D",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "481475",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": null,
            "longitude": null,
            "landAreaMi2": null,
            "waterAreaMi2": null,
            "landAreaKm2": null,
            "waterAreaKm2": null,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W23158",
                    "uspsCityName": "CARROLLTON",
                    "titleCaseCityName": "Carrollton",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": null
        },
        {
            "zipCode": "75010",
            "uspsMainCityKey": "W23158",
            "uspsMainCityName": "CARROLLTON",
            "titleCaseCityName": "Carrollton",
            "zipClassificationCode": "N",
            "zipClassificationDesc": "Non-Unique Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "B",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Apply-Merging Not Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "481475",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "121",
            "uspsCountyName": "DENTON",
            "titleCaseCountyName": "Denton",
            "latitude": 33.049965,
            "longitude": -96.87302,
            "landAreaMi2": 8.082,
            "waterAreaMi2": 0.065,
            "landAreaKm2": 20.933289,
            "waterAreaKm2": 0.168897,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W23158",
                    "uspsCityName": "CARROLLTON",
                    "titleCaseCityName": "Carrollton",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": [
                {
                    "year": 2000,
                    "totalPopulation": 13202,
                    "malePopulation": 6463,
                    "femalePopulation": 6739
                },
                {
                    "year": 2010,
                    "totalPopulation": 21607,
                    "malePopulation": 10257,
                    "femalePopulation": 11350
                },
                {
                    "year": 2020,
                    "totalPopulation": 33186,
                    "malePopulation": 15834,
                    "femalePopulation": 17352
                }
            ]
        },
        {
            "zipCode": "75017",
            "uspsMainCityKey": "W24197",
            "uspsMainCityName": "IRVING",
            "titleCaseCityName": "Irving",
            "zipClassificationCode": "P",
            "zipClassificationDesc": "PO Box Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "C",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "484360",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": null,
            "longitude": null,
            "landAreaMi2": null,
            "waterAreaMi2": null,
            "landAreaKm2": null,
            "waterAreaKm2": null,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W24197",
                    "uspsCityName": "IRVING",
                    "titleCaseCityName": "Irving",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": null
        },
        {
            "zipCode": "75015",
            "uspsMainCityKey": "W24197",
            "uspsMainCityName": "IRVING",
            "titleCaseCityName": "Irving",
            "zipClassificationCode": "P",
            "zipClassificationDesc": "PO Box Zip",
            "uspsFacilityCode": "P",
            "uspsFacilityName": "Post Office",
            "uspsCityMailingInd": true,
            "uspsDeliveryCode": "Y",
            "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",
            "uspsCarrierRouteSortCode": "C",
            "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Permitted",
            "uniqueZipNameInd": false,
            "uspsFinanceNumber": "484360",
            "stateCode": "TX",
            "stateName": "Texas",
            "stateFipsCode": "48",
            "stateAbbr": "Tex.",
            "countyFipsCode": "113",
            "uspsCountyName": "DALLAS",
            "titleCaseCountyName": "Dallas",
            "latitude": null,
            "longitude": null,
            "landAreaMi2": null,
            "waterAreaMi2": null,
            "landAreaKm2": null,
            "waterAreaKm2": null,
            "divisionCode": "7",
            "divisionName": "West South Central Division",
            "regionCode": "3",
            "regionName": "South Region",
            "msaCode": "19100",
            "msaName": "Dallas-Fort Worth-Arlington, TX Metro Area",
            "cityAliases": [
                {
                    "uspsCityKey": "W24197",
                    "uspsCityName": "IRVING",
                    "titleCaseCityName": "Irving",
                    "uspsCityAbbr": null,
                    "uspsCityMailingInd": true,
                    "uspsMainCityInd": true
                }
            ],
            "zipCodeStatistics": null
        }
    ]
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/div&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;In essence, the &lt;a href="/API-Products/Zip-Code-API"&gt;Zip Code API&lt;/a&gt; can serve as a valuable tool for businesses and organizations looking to gain insights into the geographic and demographic makeup of Metropolitan Statistical Areas for a wide range of applications.&lt;/p&gt;
</description><guid isPermaLink="false">22</guid></item><item><title>Get US Population By Zip Code</title><link>https://www.metadapi.com/Blog/PostId/21/get-us-population-by-zip-code</link><category>About the Data</category><pubDate>Tue, 20 Feb 2024 19:07:33 GMT</pubDate><description>&lt;h2&gt;Understanding ZCTAs&lt;/h2&gt;

&lt;p&gt;ZIP Code Tabulation Areas (ZCTAs) serve as a statistical approximation of U.S. Postal Service ZIP codes, providing a unique lens through which to analyze population data. Unlike traditional ZIP codes, ZCTAs are designed by the Census Bureau to represent geographical areas, making them a valuable tool for granular demographic insights.&lt;/p&gt;

&lt;h2&gt;The MetadAPI Population by Zip Code Dataset&lt;/h2&gt;

&lt;p&gt;The Census Bureau's ZCTAs population data is released every 10 years as a result of the decennial census. The U.S. Census Bureau conducts a census every 10 years to determine the number of people living in the United States. The census counts each resident of the country, where they live on April 1, every ten years ending in zero. This data is provided using the ZCTAs tabulation approximations to the USPS Zip Codes. Metadapi takes this information and produces a user friendly data model within the JSON response for the zip code information. The array zipCodeStatistics contains a model with the year, totalPopulation, malePopulation and femalePopulation for each zip code as highlighted on the example below.&lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;code&gt;&lt;code&gt;{&lt;br /&gt;
  "&lt;strong&gt;year&lt;/strong&gt;": 2020,&lt;br /&gt;
  "&lt;strong&gt;totalPopulation&lt;/strong&gt;": 52943,&lt;br /&gt;
  "&lt;strong&gt;malePopulation&lt;/strong&gt;": 25206,&lt;br /&gt;
  "&lt;strong&gt;femalePopulation&lt;/strong&gt;": 27737&lt;br /&gt;
}&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;

&lt;p&gt;The full JSON model for Houston Texas &lt;a href="https://www.metadapi.com/us-zip-codes/77070"&gt;zip code 77070&lt;/a&gt; is presented below (where you can see the population for this zip code for the years 2000, 2010 and 2020).&lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;code&gt;{&lt;br /&gt;
    "links": {&lt;br /&gt;
        "self": "/zipc/v2/zipcodes/77070"&lt;br /&gt;
    },&lt;br /&gt;
    "meta": {&lt;br /&gt;
        "count": 1&lt;br /&gt;
    },&lt;br /&gt;
    "data": {&lt;br /&gt;
        "zipCode": "77070",&lt;br /&gt;
        "uspsMainCityKey": "W24130",&lt;br /&gt;
        "uspsMainCityName": "HOUSTON",&lt;br /&gt;
        "titleCaseCityName": "Houston",&lt;br /&gt;
        "zipClassificationCode": "N",&lt;br /&gt;
        "zipClassificationDesc": "Non-Unique Zip",&lt;br /&gt;
        "uspsFacilityCode": "P",&lt;br /&gt;
        "uspsFacilityName": "Post Office",&lt;br /&gt;
        "uspsCityMailingInd": true,&lt;br /&gt;
        "uspsDeliveryCode": "Y",&lt;br /&gt;
        "uspsDeliveryDesc": "Office Has City-Delivery Carrier Routes",&lt;br /&gt;
        "uspsCarrierRouteSortCode": "D",&lt;br /&gt;
        "uspsCarrierRouteRateSortDesc": "Carrier Route. Sortation/Rates. Do Not Apply-Merging Not Permitted",&lt;br /&gt;
        "uniqueZipNameInd": false,&lt;br /&gt;
        "uspsFinanceNumber": "484145",&lt;br /&gt;
        "stateCode": "TX",&lt;br /&gt;
        "stateName": "Texas",&lt;br /&gt;
        "stateFipsCode": "48",&lt;br /&gt;
        "stateAbbr": "Tex.",&lt;br /&gt;
        "countyFipsCode": "201",&lt;br /&gt;
        "uspsCountyName": "HARRIS",&lt;br /&gt;
        "titleCaseCountyName": "Harris",&lt;br /&gt;
        "latitude": 29.979456,&lt;br /&gt;
        "longitude": -95.57332,&lt;br /&gt;
        "landAreaMi2": 13.035,&lt;br /&gt;
        "waterAreaMi2": 0.128,&lt;br /&gt;
        "landAreaKm2": 33.76091,&lt;br /&gt;
        "waterAreaKm2": 0.330637,&lt;br /&gt;
        "divisionCode": "7",&lt;br /&gt;
        "divisionName": "West South Central Division",&lt;br /&gt;
        "regionCode": "3",&lt;br /&gt;
        "regionName": "South Region",&lt;br /&gt;
        "msaCode": "26420",&lt;br /&gt;
        "msaName": "Houston-The Woodlands-Sugar Land, TX Metro Area",&lt;br /&gt;
        "cityAliases": [&lt;br /&gt;
            {&lt;br /&gt;
                "uspsCityKey": "W24130",&lt;br /&gt;
                "uspsCityName": "HOUSTON",&lt;br /&gt;
                "titleCaseCityName": "Houston",&lt;br /&gt;
                "uspsCityAbbr": null,&lt;br /&gt;
                "uspsCityMailingInd": true,&lt;br /&gt;
                "uspsMainCityInd": true&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        "zipCodeStatistics": [&lt;br /&gt;
            {&lt;br /&gt;
                "year": 2000,&lt;br /&gt;
                "totalPopulation": 32385,&lt;br /&gt;
                "malePopulation": 15812,&lt;br /&gt;
                "femalePopulation": 16573&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                "year": 2010,&lt;br /&gt;
                "totalPopulation": 46017,&lt;br /&gt;
                "malePopulation": 22355,&lt;br /&gt;
                "femalePopulation": 23662&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                "year": 2020,&lt;br /&gt;
                "totalPopulation": 52943,&lt;br /&gt;
                "malePopulation": 25206,&lt;br /&gt;
                "femalePopulation": 27737&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;

&lt;h2&gt;Population by Zip Code Use Cases&lt;/h2&gt;

&lt;p&gt;Analyzing census population by zip code can help with urban planning, resource allocation, and targeted community outreach. It's valuable for:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Resource Distribution&lt;/strong&gt;: Efficiently allocating public services, such as schools, healthcare facilities, and emergency services based on population density in specific zip codes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Business Planning&lt;/strong&gt;: Understanding demographics helps businesses tailor their products/services and target marketing campaigns to specific regions.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Infrastructure Development&lt;/strong&gt;: Planning and prioritizing infrastructure projects like roads, public transportation, and utilities based on population density and growth.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Policy Making&lt;/strong&gt;: Informing policymakers about the unique needs of different communities, influencing decisions related to zoning, housing, and social services.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Healthcare Planning&lt;/strong&gt;: Identifying areas with specific health needs, enabling better distribution of medical resources and public health interventions.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Education Planning&lt;/strong&gt;: Tailoring educational programs and allocating resources based on the demographics and needs of different zip codes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Emergency Response&lt;/strong&gt;: Enhancing emergency response planning by understanding population distribution, ensuring effective evacuation plans, and allocating resources for disaster management.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Demographic Studies&lt;/strong&gt;: Conducting detailed demographic studies to understand trends, social disparities, and changes over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By leveraging census population data at the zip code level, communities and organizations can make more informed decisions to address specific challenges and promote well-being.&lt;/p&gt;

&lt;h2&gt;Population by Zip Code Python Example&lt;/h2&gt;

&lt;p&gt;To bring theory into practice, let's take a look at the following Python code example.  The Python code will send a list of zip codes to the List All Zip Codes endpoint to get the details for each of them. We are going to plot the population results of each zip code to compare them together. &lt;/p&gt;

&lt;p&gt;The first part is to import the 2 libraries we'll be using on this example, "requests" to call API endpoints and matplotlib to create a chart with the results.&lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;
&lt;p&gt;&lt;code&gt;import requests&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;import matplotlib.pyplot as plt&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Next we create a function to call the endpoint to get a list of zip codes &lt;code&gt;&lt;your api="" key=""&gt;&lt;a href="https://www.metadapi.com/us-zip-codes/33009"&gt;33009&lt;/a&gt;,&lt;a href="https://www.metadapi.com/us-zip-codes/33967"&gt;33967&lt;/a&gt;,&lt;a href="https://www.metadapi.com/us-zip-codes/48201"&gt;48201&lt;/a&gt;&lt;/your&gt;&lt;/code&gt;. (in the example below you need to replace the text &lt;your api="" key=""&gt; with your API key from metadapi). &lt;/your&gt;&lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;code&gt;def fetch_data_from_api():&lt;br /&gt;
  vheaders = {"Ocp-Apim-Subscription-Key": "&lt;your api="" key=""&gt;"}&lt;br /&gt;
  url = f"https://global.metadapi.com/zipc/v2/zipcodes?zipcode=33009,33967,48201"&lt;br /&gt;
  response = requests.get(url,headers=vheaders)  if response.status_code == 200: &lt;br /&gt;
    return response.json()&lt;br /&gt;
  else:&lt;br /&gt;
    print(f"Failed to fetch data. Status code: {response.status_code}")&lt;br /&gt;
    return None&lt;/your&gt;&lt;/code&gt;&lt;/div&gt;

&lt;p&gt;Next step we create a function that plots the population data for each zip code:&lt;/p&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;code&gt; def plot_population_data(data):&lt;br /&gt;
  for zipcodes in data['data']:&lt;br /&gt;
    years = []&lt;br /&gt;
    populations = []&lt;br /&gt;
    for zipstats in zipcodes['zipCodeStatistics']:&lt;br /&gt;
      years.append(zipstats['year'])&lt;br /&gt;
      populations.append(zipstats['totalPopulation'])&lt;br /&gt;
      plt.plot(years,populations, label = zipcodes['zipCode'])&lt;br /&gt;
plt.title("Population Over Years")&lt;br /&gt;
plt.xlabel("Year")&lt;br /&gt;
plt.ylabel("Total Population")&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show() &lt;/code&gt;&lt;/div&gt;

&lt;p&gt;To download the full source code visit the &lt;a href="https://github.com/Metadapi/zip-code-api" target="_blank"&gt;zip code github&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Running this code will give you the following graph showing the population for each of the zip codes provided:&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/Portals/0/Images/Blog/python-get-population-by-zip-code-graph.png?ver=5qeumORF71LLMO3H_xSksA%3d%3d" style="width: 587px; height: 450px;" /&gt;&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;The utilization of an API providing population data by zip code offers invaluable insights and benefits for various applications. This comprehensive data source empowers businesses, researchers, and policymakers to make informed decisions by understanding demographic trends and population dynamics at a localized level. Whether optimizing marketing strategies, enhancing urban planning, or tailoring public services, the precision and granularity of zip code-specific population information enable more accurate analyses and targeted initiatives. &lt;/p&gt;
</description><guid isPermaLink="false">21</guid></item><item><title>Understanding FIPS Codes: A Key to Geographic Identification</title><link>https://www.metadapi.com/Blog/PostId/19/understanding-fips-codes</link><category>About the Data</category><pubDate>Mon, 29 Jan 2024 19:45:46 GMT</pubDate><description>&lt;h2&gt;What are FIPS Codes? &lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;FIPS codes&lt;/strong&gt; are a set of standardized codes developed by the National Institute of Standards and Technology (NIST) within the United States Department of Commerce. FIPS stands for Federal Information Processing Standards. These codes were introduced to facilitate uniform identification and classification of geographic entities such as &lt;strong&gt;counties &lt;/strong&gt;and &lt;strong&gt;states&lt;/strong&gt;. FIPS codes are primarily numerical, allowing for concise representation and easy integration into databases and information systems. &lt;/p&gt;

&lt;h2&gt;Types of FIPS Codes&lt;/h2&gt;

&lt;p&gt;There are two main types of FIPS codes – &lt;strong&gt;FIPS State Codes&lt;/strong&gt; and &lt;strong&gt;FIPS County Codes&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;FIPS State Codes: These are two-digit numerical codes assigned to each state and the District of Columbia in the United States. For instance, Alabama is represented by the FIPS State Code 01, while California is assigned the code 06. &lt;/li&gt;
	&lt;li&gt;FIPS County Codes: These are three-digit numerical codes assigned to each county within a state. FIPS County Codes are unique within a state, ensuring precise identification. For example, Los Angeles County in California is designated with the FIPS County Code 037. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Significance and Use of FIPS Codes&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Government Administration&lt;/strong&gt;: FIPS codes play a pivotal role in various government functions, such as census data collection, election administration, and federal funding distribution. When conducting a census or analyzing demographic trends, FIPS codes help organize and categorize data efficiently. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emergency Services&lt;/strong&gt;: In emergency management, FIPS codes are used to identify specific regions affected by natural disasters or emergencies. This aids in coordinating response efforts, allocating resources, and providing accurate information to the public. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Healthcare Systems&lt;/strong&gt;: FIPS codes are integrated into healthcare information systems to facilitate regional health analysis, manage health resources, and study the prevalence of diseases across different geographic areas. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business and Research&lt;/strong&gt;: Various businesses and research institutions utilize FIPS codes to categorize and analyze data related to market research, economic trends, and regional development. This aids in decision-making processes and strategic planning. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Postal Services&lt;/strong&gt;: FIPS codes are often utilized by postal services for efficient mail sorting and delivery. They contribute to the automation of address processing systems, minimizing errors and improving delivery accuracy. Conclusion: FIPS codes serve as an essential tool for standardizing geographic identification across various sectors. From government administration to emergency services, healthcare, business, and beyond, these codes streamline data management and analysis processes. As technology continues to advance, the utilization of FIPS codes is likely to evolve, further enhancing their role in geographic information systems and data-driven decision-making.&lt;/p&gt;

&lt;h2&gt;FIPS Codes on the US Zip Code API&lt;/h2&gt;

&lt;div&gt;The &lt;a href="/API-Products/Zip-Code-API"&gt;US Zip Code API&lt;/a&gt; by Metadapi enhances the zip code data with additional information that allows for a rich dictionary of elements to use in all kinds of solution developments. For each zip code we provide the "State" and "County" FIPS codes associated to it.   As an example, for the Beverly Hills zip code 90210 the following state and county information is presented:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;A simplified response to GET &lt;code&gt;https://global.metadapi.com/zipc/v1/zipcodes/90210 :&lt;/code&gt;&lt;/div&gt;

&lt;div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"&gt;&lt;code&gt;"stateCode": "CA",&lt;br /&gt;
"stateName": "California",&lt;br /&gt;
"&lt;strong&gt;stateFipsCode&lt;/strong&gt;": "06",&lt;br /&gt;
"stateAbbr": "Calif.",&lt;br /&gt;
"&lt;strong&gt;countyFipsCode&lt;/strong&gt;": "037",&lt;br /&gt;
"uspsCountyName": "LOS ANGELES",&lt;br /&gt;
"titleCaseCountyName": "Los Angeles"&lt;/code&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;We do not treat the FIPS codes as purely numerical, the same way we don't treat zip codes as numbers, because these codes have leading zero's.&lt;/div&gt;
</description><guid isPermaLink="false">19</guid></item><item><title>API Clients Review - 2024</title><link>https://www.metadapi.com/Blog/PostId/7/best-api-clients</link><category>Developer Solutions</category><pubDate>Tue, 02 Jan 2024 22:25:00 GMT</pubDate><description>&lt;h1&gt;Introduction&lt;/h1&gt;

&lt;div&gt;
&lt;p&gt;In the rapidly evolving landscape of software development, APIs (Application Programming Interfaces) have emerged as the cornerstone for seamless communication between diverse applications and services. As developers navigate through the intricate web of APIs, the importance of efficient API client tools becomes paramount. These tools not only simplify the interaction with APIs but also streamline the development process, making it more agile and productive.&lt;/p&gt;
In this comprehensive blog article, we delve into the realm of API client tools, exploring and evaluating a myriad of options available to developers. Whether you're a seasoned developer seeking to optimize workflows or a newcomer looking for the ideal tool to start your API journey, this review aims to unravel the best API client tools&lt;/div&gt;

&lt;div&gt;
&lt;h2&gt;What is an API Client?&lt;/h2&gt;

&lt;p&gt;An API client serves as a crucial intermediary that facilitates the interaction between software applications and APIs (Application Programming Interfaces). In essence, it acts as a bridge, enabling developers to send requests to APIs and receive responses, thereby accessing and utilizing the functionalities and data offered by these APIs.&lt;/p&gt;

&lt;p&gt;&lt;span style="font-family:Calibri,sans-serif"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Think of an API client as a tool or software component that simplifies the complexities of communication between different systems. It abstracts away the technical intricacies, providing developers with a user-friendly interface or programming library to make HTTP requests, handle authentication, format data, and interpret responses from APIs.&lt;/p&gt;
&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;table class="table table-striped"&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th&gt;API Client&lt;/th&gt;
			&lt;th&gt;Description from Vendor&lt;/th&gt;
			&lt;th&gt;Features&lt;/th&gt;
			&lt;th&gt;Links&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#postman_review"&gt;Postman&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-primary"&gt;windows&lt;/span&gt; &lt;span class="badge badge-sm badge-tertiary"&gt;mac os&lt;/span&gt; &lt;span class="badge badge-sm badge-secondary"&gt;linux&lt;/span&gt; &lt;span class="badge badge-sm badge-dark"&gt;cli&lt;/span&gt; &lt;span class="badge badge-sm badge-success"&gt;web client&lt;/span&gt; &lt;span class="badge badge-sm badge-default"&gt;vs code extension&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://www.postman.com/" target="_blank"&gt;Postman Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://www.postman.com/downloads/" target="_blank"&gt;Postman Download Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://learning.postman.com/docs/introduction/overview/" target="_blank"&gt;Postman Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#curl_review"&gt;Curl&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Curl is used in command lines or scripts to transfer data. curl is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, medical devices, settop boxes, computer games, media players and is the Internet transfer engine for thousands of software applications in over twenty billion installations.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-dark"&gt;cli&lt;/span&gt; &lt;span class="badge badge-sm badge-warning"&gt;open source&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://curl.se/" target="_blank"&gt;Curl Home Page&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#paw_review"&gt;Paw&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;The most advanced API tool for Mac. RapidAPI for Mac is a full-featured HTTP client that lets you test and describe the APIs you build or consume. It has a beautiful native macOS interface to compose requests, inspect server responses, generate client code and export API definitions.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-tertiary"&gt;mac os&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://paw.cloud/" target="_blank"&gt;Paw Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://paw.cloud/docs/" target="_blank"&gt;Paw Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#thunder_client_review"&gt;Thunder Client&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Hand-crafted lightweight Rest Client for testing APIs. Supports collections, environments, git collaboration and local storage.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-default"&gt;vs code extension&lt;/span&gt;&lt;span class="badge badge-sm badge-dark"&gt;cli&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://www.thunderclient.com/" target="_blank"&gt;Thunder Client Home Page&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#hoppscotch_review"&gt;Hoppscotch&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Hoppscotch is a lightweight, web-based API development suite. It was built from the ground up with ease of use and accessibility in mind providing all the functionality needed for API developers with minimalist, unobtrusive UI.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-success"&gt;web client&lt;/span&gt;&lt;span class="badge badge-sm badge-warning"&gt;open source&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://hoppscotch.io/" target="_blank"&gt;Hoppscotch Client&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://github.com/hoppscotch/hoppscotch" target="_blank"&gt;Hoppscotch Github&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://docs.hoppscotch.io/documentation/getting-started/introduction" target="_blank"&gt;Hoppscotch Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#insomnia_review"&gt;Insomnia&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Kong Insomnia is a collaborative open source API development platform that makes it easy to build high-quality APIs — without the bloat and clutter of other tools.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-primary"&gt;windows&lt;/span&gt; &lt;span class="badge badge-sm badge-tertiary"&gt;mac os&lt;/span&gt; &lt;span class="badge badge-sm badge-secondary"&gt;linux&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://insomnia.rest/" target="_blank"&gt;Insomnia Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://insomnia.rest/plugins" target="_blank"&gt;Insomnia Plugins&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://docs.insomnia.rest/insomnia/get-started" target="_blank"&gt;Kong Insomnia Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#nightingale_review"&gt;Nightingale&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;A modern, resource-friendly REST client for Windows 10.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-primary"&gt;windows&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://nightingale.rest/" target="_blank"&gt;Nightingale Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://github.com/jenius-apps/nightingale-rest-api-client" target="_blank"&gt;Nightingale Github&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#advanced_rest_client_review"&gt;Advanced REST Client&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Advanced REST client allows you to test your APIs. Easy and clean user interface helps you focus on your API and not tooling. Store your requests and projects on Google Drive and share it with your team.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-primary"&gt;windows&lt;/span&gt; &lt;span class="badge badge-sm badge-tertiary"&gt;mac os&lt;/span&gt; &lt;span class="badge badge-sm badge-secondary"&gt;linux&lt;/span&gt; &lt;span class="badge badge-sm badge-warning"&gt;open source&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://www.advancedrestclient.com/" target="_blank"&gt;Advanced REST Client Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://github.com/advanced-rest-client/arc-electron" target="_blank"&gt;Advanced REST Client Github&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://docs.advancedrestclient.com/" target="_blank"&gt;Advanced REST Client Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#httpie_review"&gt;HTTPie&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;HTTPie is making APIs simple and intuitive for those building the tools of our time.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-primary"&gt;windows&lt;/span&gt; &lt;span class="badge badge-sm badge-success"&gt;web client&lt;/span&gt; &lt;span class="badge badge-sm badge-dark"&gt;cli&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://httpie.io/" target="_blank"&gt;HTTPie Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://httpie.io/app" target="_blank"&gt;Web client app&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://httpie.io/docs" target="_blank"&gt;HTTPie Documentation&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href="#apiscout_review"&gt;ApiScout&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;ApiScout is one and only Rest Client for macOS you will need while building, testing and describing your APIs. It's built for developers by developers.&lt;/td&gt;
			&lt;td&gt;&lt;span class="badge badge-sm badge-tertiary"&gt;mac os&lt;/span&gt;&lt;/td&gt;
			&lt;td&gt;
			&lt;ul class="list list-icons list-icons-sm"&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://theapiscout.com/" target="_blank"&gt;ApiScout Home Page&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;em class="fas fa-caret-right"&gt;&lt;/em&gt;&lt;a href="https://apps.apple.com/us/app/apiscout-rest-api-http-client/id1631827909" target="_blank"&gt;ApiScout Apple app store&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id="postman_review"&gt;Postman Review&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.postman.com/"&gt;https://www.postman.com/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman Review" src="/Portals/0/Images/Blog/APIClients/postman.png?ver=kX1RZbLfnC3YOjAH3q5fMA%3d%3d" style="width: 500px; height: 287px;" /&gt;&lt;/p&gt;

&lt;p&gt;Postman stands as a pivotal tool in the realm of API development, offering a comprehensive suite of features that streamline the process of designing, testing, and collaborating on APIs. Renowned for its user-friendly interface and robust functionalities, Postman has established itself as a go-to solution for developers seeking efficiency and flexibility in managing APIs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features of Postman&lt;/strong&gt;: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Intuitive Interface: Postman's intuitive user interface simplifies the creation of HTTP requests, allowing users to effortlessly build and organize API requests. Its visually appealing workspace enables easy navigation and management of collections, requests, and environments. &lt;/li&gt;
	&lt;li&gt;Request Building and Testing: With Postman, developers can construct various types of requests (GET, POST, PUT, DELETE, etc.) and customize headers, parameters, authentication methods, and payloads. Its built-in testing framework facilitates the creation of automated tests, validating API responses for correctness and reliability. &lt;/li&gt;
	&lt;li&gt;Collection and Environment Management: Postman's collection feature allows users to organize API requests into folders, making it convenient to manage and share related requests as a cohesive unit. Environments enable the configuration of variables, easing the process of testing across different environments (e.g., development, staging, production). &lt;/li&gt;
	&lt;li&gt;Collaboration and Sharing: Collaboration is seamless in Postman, fostering teamwork through features like shared workspaces, comments, and team libraries. Developers can share collections, collaborate on API designs, and synchronize changes, promoting efficient teamwork and knowledge sharing. &lt;/li&gt;
	&lt;li&gt;Mock Servers and Documentation: Postman facilitates the creation of mock servers from API definitions, enabling developers to simulate API endpoints for testing purposes even before the actual implementation. Additionally, it offers tools to generate comprehensive API documentation automatically, simplifying the process of documenting APIs for internal or external use. &lt;/li&gt;
	&lt;li&gt;Integration and Automation: Postman seamlessly integrates with various third-party tools and services, allowing for enhanced automation and workflow customization. Integration with CI/CD pipelines, monitoring tools, and version control systems streamlines the development lifecycle. &lt;/li&gt;
	&lt;li&gt;Extensive Community Support: The Postman community is vibrant and supportive, offering a plethora of resources, including tutorials, templates, and forums. Users can tap into this wealth of knowledge to learn, troubleshoot, and explore best practices in API development. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Postman Cons&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Software is complex to use for first time users. Because of its rich functionality and plethora of options, the software requires a level of training that will allow users to proper leverage the solution. &lt;/li&gt;
	&lt;li&gt;API Documentation could use some improvements. The documentation capabilities feels a bit cumbersome. &lt;/li&gt;
	&lt;li&gt;Test cases with external dependencies are hard to manage. Connectivity to databases, or more programmatic test case writing is not easy to do. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Overall&lt;/strong&gt;, Postman's robust feature set, combined with its rich interface and collaborative capabilities, makes it a great tool for developers, QA engineers, and API enthusiasts alike. Its ability to simplify API testing, documentation, and collaboration contributes significantly to optimizing the API development process, making it a staple in modern software development workflows.&lt;/p&gt;

&lt;h2 id="curl_review"&gt;Curl Review&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://curl.se/"&gt;https://curl.se/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="Curl Review" src="/Portals/0/Images/Blog/APIClients/curl.png?ver=yAIWo72c1fMxi6ThjWJZ9Q%3d%3d" style="width: 500px; height: 156px;" /&gt;&lt;/p&gt;

&lt;p&gt;Despite its seemingly simple command-line interface, stands as a powerful and versatile API client tool widely favored among developers and system administrators alike. Renowned for its flexibility, efficiency, and portability, Curl excels in performing HTTP requests and is celebrated for its wide-ranging capabilities. &lt;/p&gt;

&lt;p&gt;Key Features of Curl: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Command-Line Interface: Curl's command-line interface (CLI) allows for quick and straightforward execution of HTTP requests directly from the terminal, providing developers with a lightweight and portable solution for API interaction. Its simplicity enables users to craft requests efficiently using various options and flags. &lt;/li&gt;
	&lt;li&gt;Wide Protocol Support: Curl supports a multitude of protocols beyond HTTP and HTTPS, including FTP, FTPS, SCP, SFTP, LDAP, and many others. This broad protocol support makes it a versatile tool capable of handling diverse data transfer requirements (outside of just API requests). &lt;/li&gt;
	&lt;li&gt;Customization and Flexibility: Users can tailor requests extensively by specifying headers, HTTP methods, request bodies, authentication methods, and more, offering a high degree of flexibility in crafting and fine-tuning requests according to specific needs. &lt;/li&gt;
	&lt;li&gt;Output Formatting and Data Handling: Curl offers options for handling response data, such as displaying headers only, saving output to files, or formatting responses in various ways. This flexibility in managing output facilitates easy parsing and manipulation of API responses. &lt;/li&gt;
	&lt;li&gt;Proxy Support and Network Operations: It provides support for proxies, allowing users to route requests through different proxy servers. &lt;/li&gt;
	&lt;li&gt;Cross-Platform Compatibility: Curl is available across multiple platforms, including Windows, macOS, and various Unix-like systems, ensuring consistent functionality and ease of use across different operating environments. &lt;/li&gt;
	&lt;li&gt;Scripting and Automation: Its command-line nature makes Curl highly conducive to scripting and automation. Developers can incorporate Curl commands into scripts and workflows, enabling automated testing, monitoring, and integration within larger systems or pipelines. &lt;/li&gt;
	&lt;li&gt;Open-Source and Community Support: Being an open-source tool, Curl enjoys extensive community support. Users can benefit from a wealth of documentation, forums, and resources contributed by the community, fostering learning and troubleshooting. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cons: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Not easy for beginners, since there is no UI (interface) it’s hard to get a guided approach to building requests. &lt;/li&gt;
	&lt;li&gt;Creating “complex” api requests is hard. Simple API requests are very straightforward on the Curl syntax, but as that simplicity goes away and more complex requests need to be built, the syntax on Curl could get quite cumbersome. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Curl's command-line interface, coupled with its extensive feature set and support for multiple protocols, makes it a preferred choice for scenarios where simplicity, portability, and flexibility are paramount. While its command-line nature might initially present a learning curve for beginners, its versatility and capabilities make Curl an indispensable tool in the arsenal of developers, system administrators, and anyone handling HTTP requests and data transfers.&lt;/p&gt;

&lt;h2 id="paw_review"&gt;Paw Review&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://paw.cloud/"&gt;https://paw.cloud/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="Paw Review" src="/Portals/0/Images/Blog/APIClients/paw.png?ver=R6-C-ij42uBqYrc11xIQPw%3d%3d" style="width: 500px; height: 220px;" /&gt;&lt;/p&gt;

&lt;p&gt;This macOS-exclusive application provides a comprehensive environment for designing, testing, and debugging APIs, making it a go-to choice for professionals seeking a powerful and intuitive API development experience. It seems the product is being re-branded as RapidAPI for Mac. &lt;/p&gt;

&lt;p&gt;Key Features of Paw: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Intuitive User Interface: Paw boasts an intuitive and visually appealing interface that simplifies the creation and organization of API requests. Its user-centric design facilitates seamless navigation and enhances the overall user experience. &lt;/li&gt;
	&lt;li&gt;Dynamic Request Building: The tool allows for the creation of complex API requests effortlessly, supporting various HTTP methods, custom headers, query parameters, authentication mechanisms (including OAuth), and request body formats. Users can generate requests using a multitude of built-in templates or create their own, fostering flexibility in API testing and exploration. &lt;/li&gt;
	&lt;li&gt;Environment and Variable Management: Paw offers robust support for managing environments, enabling users to define and switch between different sets of variables (e.g., URLs, API keys, tokens) for testing across various environments. This feature streamlines the testing process in different development stages. &lt;/li&gt;
	&lt;li&gt;Response Visualization and Validation: It provides a visual preview of API responses, aiding in understanding and validating the data returned by the API. Paw supports various response viewers for JSON, XML, HTML, and other formats, enhancing readability and analysis of API responses. &lt;/li&gt;
	&lt;li&gt;Code Generation and Integration: One of Paw's standout features is its ability to generate code snippets in multiple programming languages directly from API requests. This feature facilitates seamless integration with the user's codebase and accelerates the development process. &lt;/li&gt;
	&lt;li&gt;Extensions and Customization: Paw supports extensions that extend its functionality, allowing users to tailor the tool to their specific needs. Users can create their extensions or leverage existing ones from the Paw Extension Registry to enhance the tool's capabilities. &lt;/li&gt;
	&lt;li&gt;Collaboration and Teamwork: With built-in collaboration features, Paw facilitates team-based API development. Users can share workspaces, collaborate on API designs, and synchronize changes, fostering efficient teamwork and knowledge sharing. &lt;/li&gt;
	&lt;li&gt;Comprehensive Documentation: Paw simplifies the process of documenting APIs by providing tools to generate comprehensive documentation automatically. This documentation can be shared with team members or external stakeholders. &lt;/li&gt;
	&lt;li&gt;Easy migration tools. Paw provides extensions that allow easy migration from other API Clients. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overall, Paw's is a good client for Mac users. It provides a clean interface with a lot of functionality.&lt;/p&gt;

&lt;h2 id="thunder_client_review"&gt;Thunder Client Review&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.thunderclient.com/"&gt;https://www.thunderclient.com/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="Thunder Client review" src="/Portals/0/Images/Blog/APIClients/thunder_client.png?ver=iGh_Eay4lrZRqj_8blUANg%3d%3d" style="width: 500px; height: 207px;" /&gt;&lt;/p&gt;

&lt;p&gt;Thunder Client is a lightweight and versatile API client extension specifically designed for &lt;strong&gt;Visual Studio Code&lt;/strong&gt;. This tool aims to simplify API testing and development within the familiar environment of Visual Studio Code, offering a range of features tailored to enhance productivity and streamline the API testing process. &lt;/p&gt;

&lt;p&gt;Key Features of Thunder Client: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Seamless Integration with Visual Studio Code: Thunder Client seamlessly integrates into Visual Studio Code, allowing developers to work within their preferred coding environment. This integration ensures familiarity and ease of use for developers already accustomed to Visual Studio Code. &lt;/li&gt;
	&lt;li&gt;Leverage Visual Studio Code Interface: Thunder Client leverages the visual studio code user interface and simplifies the creation and execution of API requests by enabling an easy to use API request interface. It provides a visually appealing workspace for managing requests, collections, environments, and response data, ensuring easy navigation and organization. &lt;/li&gt;
	&lt;li&gt;Multiple Request Types and Customization: It supports various HTTP request types (GET, POST, PUT, DELETE, etc.) and allows customization of request headers, parameters, authentication methods, and body content, catering to diverse API testing requirements. &lt;/li&gt;
	&lt;li&gt;Environment Management: Thunder Client facilitates the creation and management of environments, enabling users to define variables (e.g., base URLs, authentication tokens) specific to different testing environments. This feature aids in seamless testing across multiple setups. &lt;/li&gt;
	&lt;li&gt;Response Handling and Visualization: The tool provides a clear visualization of API responses, aiding in understanding and validating the data returned by the API. Thunder Client supports response viewers for various formats, enhancing readability and analysis of API responses. &lt;/li&gt;
	&lt;li&gt;Collection Organization: Developers can organize API requests into collections, allowing for better management and sharing of related requests as a cohesive unit. This feature helps maintain a structured workflow and simplifies collaboration among team members. &lt;/li&gt;
	&lt;li&gt;Lightweight and Fast: Thunder Client is designed to be lightweight and fast, ensuring quick response times and smooth execution of API requests, thereby optimizing the testing and development process. &lt;/li&gt;
	&lt;li&gt;Extension Ecosystem: As an extension for Visual Studio Code, Thunder Client benefits from the extensive extension ecosystem of VS Code. Users can further enhance its capabilities through various available extensions, customizations, and integrations. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thunder Client's focus on simplicity, integration with Visual Studio Code, and its array of essential features for API testing and development make it an attractive choice for developers seeking a lightweight yet powerful tool within their familiar coding environment. Its intuitive interface, coupled with its ability to handle diverse API testing scenarios, contributes to a smoother and more efficient API development workflow within Visual Studio Code. &lt;/p&gt;

&lt;p&gt;Cons: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Requires use of visual studio code. If not a VS developer, not much sense using it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="hoppscotch_review"&gt;Hoppscotch&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hoppscotch.io/"&gt;https://hoppscotch.io/&lt;/a&gt;  &lt;web based=""&gt; &lt;/web&gt;&lt;/p&gt;

&lt;p&gt;&lt;web based=""&gt;&lt;img alt="hoppscotch review" src="/Portals/0/Images/Blog/APIClients/hoppscotch.png?ver=5zexJm0Xirxo45A2_5aZEg%3d%3d" style="width: 500px; height: 182px;" /&gt;&lt;/web&gt;&lt;/p&gt;

&lt;p&gt;&lt;web based=""&gt;Hoppscotch API Request Builder, is anAPI client tool available as an open source web-based application and browser extension. You can leverage hopscotch directly on their web interface or download the source application from Github. &lt;/web&gt;&lt;/p&gt;

&lt;p&gt;&lt;web based=""&gt;Key Features of Hoppscotch API Request Builder: &lt;/web&gt;&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;web based=""&gt;Intuitive User Interface: Hoppscotch boasts a simple interface with a very clean design &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Diverse HTTP Request Support: The tool supports various HTTP request methods (GET, POST, PUT, DELETE, and support for GraphQL.) and allows customization of headers, parameters, authentication methods, and request bodies, catering to diverse API testing and development needs. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Collections and Workspaces: Hoppscotch facilitates the organization of API requests into collections and workspaces, allowing for better management, grouping of related requests, and sharing of collections among team members. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Real-time Response Visualization: It provides a real-time preview of API responses, aiding in understanding and validating the data returned by the API. Users can view and analyze responses in different formats, enhancing readability and analysis of API data. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Environment Variables and Global Values: Hoppscotch supports the use of environment variables and global values, enabling users to define and switch between different sets of variables for testing across multiple environments, improving flexibility and efficiency. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Import and Export Functionality: The tool offers capabilities to import and export API requests and collections in various formats, allowing for easy sharing, backup, and migration of data across different instances. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Collaboration Features: Hoppscotch provides collaboration features, including sharing and syncing workspaces, fostering teamwork, and enabling multiple users to collaborate on API development projects. &lt;/web&gt;&lt;/li&gt;
	&lt;li&gt;&lt;web based=""&gt;Open-Source and Extensibility: Being open-source, Hoppscotch encourages community contributions and supports extensibility, allowing users to enhance its functionalities through customizations and extensions. &lt;/web&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;web based=""&gt;Cons: &lt;/web&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;web based=""&gt;No desktop app, for those that like client applications, the only way to use Hoppscotch is via web browser.&lt;/web&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="insomnia_review"&gt;Insomnia&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://insomnia.rest/"&gt;https://insomnia.rest/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="Insomnia Review" src="/Portals/0/Images/Blog/APIClients/insomnia.png?ver=hyGcmJ3Ss7y1roE2NcfB1Q%3d%3d" style="width: 500px; height: 279px;" /&gt;&lt;/p&gt;

&lt;p&gt;Insomnia, a popular API client tool, has earned acclaim for its sleek interface, comprehensive feature set, and focus on simplifying the API testing and development process. Available as a standalone desktop application for various operating systems, Insomnia has become a go-to choice for developers seeking an intuitive and powerful environment for designing, testing, and debugging APIs. &lt;/p&gt;

&lt;p&gt;Key Features of Insomnia: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Clean and Intuitive Interface: Insomnia offers a clean, user-friendly interface that facilitates easy navigation and efficient management of API requests, environments, workspaces, and collections, ensuring a smooth workflow. &lt;/li&gt;
	&lt;li&gt;Versatile Request Building: The tool supports a wide range of HTTP request methods (GET, POST, PUT, DELETE, etc.) and allows customization of headers, query parameters, authentication mechanisms (including OAuth), and request payloads, enabling flexible and comprehensive request creation. &lt;/li&gt;
	&lt;li&gt;Environments and Variables: Insomnia supports the creation and management of environments, allowing users to define variables specific to different testing environments. This feature simplifies testing across multiple setups and enhances productivity. &lt;/li&gt;
	&lt;li&gt;Request Chaining and Templating: Users can create request chains, enabling the extraction of values from one request to be used in subsequent requests, thereby facilitating complex API workflows. Insomnia also supports request templating for reusability and efficiency. &lt;/li&gt;
	&lt;li&gt;Code Generation and Exporting: Insomnia provides the ability to generate code snippets in various programming languages directly from API requests, streamlining integration with the user's codebase. It also supports exporting requests and collections in different formats for sharing and documentation purposes. &lt;/li&gt;
	&lt;li&gt;Real-time Response Visualization: The tool offers real-time previews of API responses, allowing users to visualize and validate data returned by the API in different formats, aiding in debugging and analysis. &lt;/li&gt;
	&lt;li&gt;Collaboration and Teamwork: Insomnia supports collaboration features, such as sharing workspaces, enabling multiple team members to collaborate on API projects, fostering efficient teamwork and knowledge sharing. &lt;/li&gt;
	&lt;li&gt;Plugins and Extensibility: Insomnia's extensible nature allows users to extend its functionalities through plugins and integrations, enabling customization and enhancing its capabilities based on specific requirements. Plugin Hub - Insomnia Insomnia has an extensive list of plugins and allow users to build their own. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cons: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Not a lot of available documentation. &lt;/li&gt;
	&lt;li&gt;Small user community.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="nightingale_review"&gt;Nightingale&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nightingale.rest/"&gt;https://nightingale.rest/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/APIClients/nightingale.png?ver=UVUEQAU0VQjvhiLYozJYKA%3d%3d" style="width: 500px; height: 338px;" /&gt;&lt;/p&gt;

&lt;p&gt;Nightingale, an API client for Microsoft windows.  Stands out for its simplicity. With a clean interface, it allowed effortless navigation and organization of API requests. Supporting various HTTP methods, it offered customization options for headers, authentication, and request bodies. Nightingale enabled real-time response visualization, environment variable usage, and code generation. Collaborative features are in progress.&lt;/p&gt;

&lt;p&gt;Cons: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Project has not been updated in a while.&lt;/li&gt;
	&lt;li&gt;Lack of proper software support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="advanced_rest_client_review"&gt;Advanced REST Client&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.advancedrestclient.com/"&gt;https://www.advancedrestclient.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="advanced rest client arc review" src="/Portals/0/Images/Blog/APIClients/arc.png?ver=QTqqE-p1veSFWZk_tMSlzQ%3d%3d" style="width: 500px; height: 333px;" /&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.mulesoft.com/" target="_blank"&gt;Mulesoft &lt;/a&gt;tool, advanced rest client provides a basic user interface to run API requests. It provides easy integration to Mulesoft’s &lt;strong&gt;Anypoint Exchange&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Advanced rest client is also able to read any API specification for easy-to-read documentation.  &lt;/p&gt;

&lt;h2 id="httpie_review"&gt;HTTPie&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://httpie.io/"&gt;https://httpie.io/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="httppie review" src="/Portals/0/Images/Blog/APIClients/httpie.png?ver=EwRc3ixTGdPIzafhsoM1nw%3d%3d" style="width: 450px; height: 388px;" /&gt;&lt;/p&gt;

&lt;p&gt;HTTPie is a user-friendly, command-line HTTP client that simplifies interactions with APIs. Renowned for its simplicity and ease of use, it offers a streamlined experience for making HTTP requests and handling API interactions. Client desktop applications are currently (as of January 2024) in Beta. &lt;/p&gt;

&lt;p&gt;Key Features of HTTPie: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Simple Command-Line Interface: HTTPie operates via a straightforward command-line interface (CLI), making it easy for users to compose and execute HTTP requests without complex configurations or setups. &lt;/li&gt;
	&lt;li&gt;Intuitive Syntax and Request Building: It utilizes a simple and intuitive syntax for constructing HTTP requests, supporting various methods (GET, POST, PUT, DELETE, etc.), custom headers, query parameters, request bodies, and authentication methods. &lt;/li&gt;
	&lt;li&gt;Output Customization and Formatting: HTTPie allows users to customize and format the output of API responses, providing options to display headers only, pretty-print JSON, or format responses according to specific preferences. &lt;/li&gt;
	&lt;li&gt;Session and Authentication Management: Users can manage sessions and persist authentication credentials across requests, streamlining the testing process by avoiding repeated authentication steps. &lt;/li&gt;
	&lt;li&gt;Plugin System and Extensions: HTTPie's plugin system enables users to extend its functionalities with custom scripts or third-party plugins, enhancing its capabilities based on specific needs or requirements. &lt;/li&gt;
	&lt;li&gt;JSON Support and Data Handling: It offers native support for JSON data, simplifying the handling and manipulation of JSON payloads in requests and responses. &lt;/li&gt;
	&lt;li&gt;HTTPS, Proxies, and Security: HTTPie supports HTTPS and allows users to configure proxies, ensuring secure communication and enabling requests to traverse different network setups. &lt;/li&gt;
	&lt;li&gt;Cross-Platform Compatibility: HTTPie is compatible with various operating systems, including Windows, macOS, and Linux, ensuring consistent functionality across different environments. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2 id="apiscout_review"&gt;ApiScout&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://theapiscout.com/"&gt;https://theapiscout.com/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;img alt="api scout review" src="/Portals/0/Images/Blog/APIClients/api_scout.png?ver=hl49LKBFTQI9knkyEeOF3A%3d%3d" style="width: 500px; height: 292px;" /&gt;&lt;/p&gt;

&lt;p&gt;Mac OS REST API client. API Scout is gaining attention for its user-friendly interface and a range of functionalities aimed at simplifying API-related tasks. &lt;/p&gt;

&lt;p&gt;Key Features of API Scout: &lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Clean and Intuitive Interface: API Scout featured a clean and user-friendly interface, ensuring ease of navigation and management of API requests, endpoints, and collections. &lt;/li&gt;
	&lt;li&gt;Request Building and Customization: The tool allowed for the creation of various HTTP requests (GET, POST, PUT, DELETE, etc.) and enabled customization of headers, query parameters, authentication methods, and request bodies, ensuring flexibility in crafting requests. &lt;/li&gt;
	&lt;li&gt;Collections and Organization: Users could organize API requests into collections, aiding in better management, grouping of related requests, and facilitating sharing of collections among team members. &lt;/li&gt;
	&lt;li&gt;Response Visualization: API Scout provided real-time previews of API responses in different formats, aiding in validating data returned by the API and simplifying the debugging process. &lt;/li&gt;
	&lt;li&gt;Environment Variables: It supported the use of environment variables, allowing users to define and switch between different sets of variables for testing across multiple environments, enhancing flexibility in testing. &lt;/li&gt;
	&lt;li&gt;Exporting and Sharing: The tool offered capabilities to export requests and collections in various formats, enabling easy sharing and collaboration among team members. &lt;/li&gt;
	&lt;li&gt;Security and HTTPS Support: API Scout ensured secure communication by supporting HTTPS, allowing for secure interactions between the client and the API server. &lt;/li&gt;
	&lt;li&gt;Collaboration and Teamwork: Team collaboration, allows multiple users to work together on API projects.&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;&lt;closing statement=""&gt;&lt;/closing&gt;&lt;/p&gt;

&lt;p&gt;In conclusion, the diverse landscape of API clients presents a myriad of options catering to different needs and preferences, offering developers an array of tools to streamline their workflow and enhance application integration. Whether it's about performance, simplicity, or specific functionalities, the reviewed API clients showcased a spectrum of features, empowering users to make informed choices based on their project requirements. Ultimately, navigating through these clients demands a careful consideration of factors such as ease of use, compatibility, and scalability. With the evolving nature of technology, staying updated on the latest advancements and innovations in API clients remains paramount. As the digital ecosystem continues to expand, these versatile tools will undoubtedly play an increasingly pivotal role in shaping the efficiency and success of software development endeavors.&lt;/p&gt;
&lt;p&gt;Top Photo by &lt;a href="https://unsplash.com/@douglasamarelo?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"&gt;Douglas Lopes&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-laptop-computer-sitting-on-top-of-a-wooden-desk-ehyV_XOZ4iA?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
</description><guid isPermaLink="false">7</guid></item><item><title>County Lookup by Zip Code</title><link>https://www.metadapi.com/Blog/PostId/17/county-lookup-by-zip-code</link><category>About the Data</category><pubDate>Wed, 12 Jul 2023 21:51:00 GMT</pubDate><description>&lt;p&gt;In today's fast-paced and interconnected world, businesses face the constant challenge of finding innovative ways to gain a competitive edge. One often overlooked but incredibly valuable tool is the ability to perform a &lt;strong&gt;county lookup by zip code&lt;/strong&gt;. This seemingly simple feature has the potential to unlock a wealth of information and provide significant business benefits.&lt;/p&gt;

&lt;p&gt;Understanding the demographics, market potential, and regional dynamics of a specific county is crucial for making informed business decisions. By harnessing the power of county lookup by zip code, businesses can gain a deeper understanding of their target audience, optimize their marketing efforts, and identify untapped opportunities.&lt;/p&gt;

&lt;h2&gt;What is a county? &lt;/h2&gt;

&lt;p&gt;A county is a geographic and administrative division within a state or country. It is typically smaller than a state or province but larger than a city or town. Counties serve as a way to organize and govern specific regions, ensuring the efficient delivery of public services and facilitating local administration.&lt;/p&gt;

&lt;p&gt;The specific responsibilities and powers of counties can vary between different countries and even within different states or provinces. Generally, counties are responsible for a range of functions, including &lt;strong&gt;maintaining public records&lt;/strong&gt;, &lt;strong&gt;overseeing elections&lt;/strong&gt;, &lt;strong&gt;providing law enforcement&lt;/strong&gt; and &lt;strong&gt;public safety services&lt;/strong&gt;, managing &lt;strong&gt;public health services&lt;/strong&gt;, &lt;strong&gt;administering courts&lt;/strong&gt;, &lt;strong&gt;maintaining roads&lt;/strong&gt; and &lt;strong&gt;infrastructure&lt;/strong&gt;, and &lt;strong&gt;collecting property taxes&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;Business Benefits of County Lookup by Zip Code&lt;/h2&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Targeted Marketing&lt;/strong&gt;: Businesses can use county-level data to understand their customer base, target their marketing efforts, and tailor their advertising campaigns. By knowing the counties where their customers are located, businesses can create more effective and personalized marketing strategies.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Sales Analysis&lt;/strong&gt;: Businesses can use county-level data to analyze their sales performance in different regions. By looking at sales data broken down by county, businesses can identify which areas are driving the most sales and which areas might need more attention.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Delivery and Logistics&lt;/strong&gt;: Businesses that offer delivery or logistics services can use county-level data to optimize their operations. By knowing which counties they are delivering to, businesses can plan their routes more efficiently and ensure that their deliveries are reaching their intended destinations.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Customer Service&lt;/strong&gt;: Having county-level data can also help businesses provide better customer service. By knowing where their customers are located, businesses can provide more personalized support, such as local recommendations or information about nearby events. &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Regulatory Compliance&lt;/strong&gt;: Depending on the industry, businesses may need to comply with various county-level regulations or restrictions.  By having a county lookup by zip code, businesses can easily determine which regulations apply to their operations in a given area.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;How to Use the Zip Code API to get the county of the zip code&lt;/h2&gt;

&lt;div&gt;It's really easy to get the county information with the &lt;a href="/API-Products/Zip-Code-API"&gt;Zip Code API&lt;/a&gt;. It provides the county information for all zip codes on the JSON response. Using your favorite API tool open a request for any zip code, for example here we get the Beverly Hills &lt;a href="https://www.metadapi.com/us-zip-codes/90210"&gt;Zip Code 90210&lt;/a&gt;:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;span class="badge badge-success"&gt;GET&lt;/span&gt;&lt;code&gt; https://global.metadapi.com/zipc/v1/zipcodes/90210&lt;/code&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;The response will have the county FIPS code, County name and county Title Case name included in the response.&lt;/div&gt;

&lt;div&gt; 
&lt;pre&gt;
        "countyFipsCode": "037",
        "uspsCountyName": "LOS ANGELES",
        "titleCaseCountyName": "Los Angeles",
&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Counties &lt;/strong&gt;play a vital role in regional governance, helping to facilitate local decision-making, provide essential services, and ensure the effective administration of a specific geographical area. Using the county information provided by our &lt;a href="/API-Products/Zip-Code-API"&gt;Zip Code API&lt;/a&gt; you can always have this information available for any of your business use cases. &lt;/div&gt;
</description><guid isPermaLink="false">17</guid></item><item><title>What is a Zip Code?</title><link>https://www.metadapi.com/Blog/PostId/15/what-is-a-zip-code</link><category>About the Data</category><pubDate>Sun, 29 Jan 2023 16:08:06 GMT</pubDate><description>&lt;p&gt;A ZIP code is a postal code used by the United States Postal Service (USPS) in a system it introduced in 1963. The term ZIP, an acronym for &lt;strong&gt;Zone Improvement Plan&lt;/strong&gt;, was chosen to suggest that the mail travels more efficiently, and therefore more quickly (zipping along), when senders use the code in the postal address.&lt;/p&gt;

&lt;p&gt;The basic format of a ZIP code is a five-digit number representing a specific area or delivery route. In 1983, an extended ZIP+4 code was introduced; it includes the five digits of the ZIP code, a hyphen, and four more digits that determine a more specific location within the ZIP code.&lt;/p&gt;

&lt;p&gt;The USPS uses the ZIP code system to efficiently and accurately deliver mail. However, the use of ZIP codes extends beyond mail delivery. Many organizations, businesses, and even individuals use ZIP codes to gather and analyze data about a specific geographic area. This data can be used for a wide range of purposes, such as targeted &lt;strong&gt;marketing&lt;/strong&gt;, &lt;strong&gt;demographic analysis&lt;/strong&gt;, and even &lt;strong&gt;crime mapping&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Additionally, many online services and websites use ZIP codes to provide personalized information and recommendations to users. For example, weather forecasts, news, and even dating apps may use a user's ZIP code to provide localized information.&lt;/p&gt;

&lt;p&gt;While ZIP codes are assigned based on geographical areas, they are not the same thing. ZIP codes are used by the USPS to deliver mail, while geographical areas are used to define and study different regions for a wide range of purposes. A ZIP code can include multiple geographical areas, and a geographical area can include multiple ZIP codes. For example, a city like New York can be split into multiple zip codes, and a particular zip code can include multiple neighborhoods.  This is the reason why zip codes and geographical areas may overlap, but they are not the same thing.&lt;/p&gt;

&lt;p&gt;In terms of maintenance, the &lt;strong&gt;USPS &lt;/strong&gt;is responsible for maintaining and updating the ZIP code system. This includes assigning new codes as needed, changing existing codes due to population shifts, and making sure that all addresses are accurate and up-to-date.&lt;/p&gt;

&lt;p&gt;Overall, the ZIP code system is an important tool that plays a crucial role in mail delivery and a wide range of other uses in the United States. It helps organizations and individuals to analyze and understand the geographic areas they operate in, and also offers a convenient way to find information and services tailored to specific locations.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;section class="call-to-action with-borders with-button-arrow mb-xl"&gt;
&lt;div class="call-to-action-content"&gt;
&lt;h3&gt;The &lt;strong&gt;Zip Code API&lt;/strong&gt; is a fast, secure and comprehensive zip code service&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;REST API -- JSON RESPONSE -- SSL -- EASY TO USE&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="call-to-action-btn"&gt;&lt;a class="btn btn-lg btn-primary" href="https://www.metadapi.com/API-Products/Zip-Code-API?utm_content=blog_link" target="_blank"&gt;Try Today!&lt;/a&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;p&gt; &lt;/p&gt;
</description><guid isPermaLink="false">15</guid></item><item><title>Dynamically Invoking REST API with Data Factory</title><link>https://www.metadapi.com/Blog/PostId/9/dynamically-invoking-rest-api-with-data-factory</link><category>Tutorials</category><pubDate>Thu, 19 Jan 2023 23:56:45 GMT</pubDate><description>&lt;p&gt;In this entry we are looking at dynamically creating a REST API call based on the source data within a Data Factory pipeline.  We’ll use  the Zip Code API from Metadapi to showcase how this is done.  Please note that this pattern can be used to create a data pipeline between a file and a file, file and any database table, Data Lake and SQL Server, Data Lake and Azure Synapse, etc. the pattern just needs to replace the source and/or target endpoints and you can have many different integrations on your pipeline.&lt;/p&gt;

&lt;p&gt;Here's the pattern:&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="ETL Pattern REST API Lookup" src="/Portals/0/Images/Blog/DataFactoryRestAPI/ETL-pattern-rest-api-lookup.png?ver=JkylUCcx0R8RsF9M94jKlw%3d%3d" /&gt;&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/h2&gt;

&lt;ul&gt;
	&lt;li&gt;Knowledge of data pipeline concepts, data factory and SQL server.&lt;/li&gt;
	&lt;li&gt;Azure SQL Server DB and Azure Data Factory resources running on your Azure account.&lt;/li&gt;
	&lt;li&gt;The &lt;a href="/API-Products/Zip-Code-API" target="_blank"&gt;US Zip Code API&lt;/a&gt; subscription key. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;We have 2 tables that will be used on this tutorial, the first one called dbo.sourceCRM that contains the customerId and zipCode from a sample leads database. Our goal is to take this basic zip code information and append to it additional data that will be used by our analytical platforms and load it into table dbo.targetCRM with the following additional columns (find the DDL used and table load script in our &lt;a href="https://github.com/Metadapi/zip-code-api/tree/main/samples/Azure-Data-Factory/Dynamic-API-External-Call" target="_blank"&gt;github repository&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;stateCode&lt;/li&gt;
	&lt;li&gt;stateName&lt;/li&gt;
	&lt;li&gt;titleCaseCountyName&lt;/li&gt;
	&lt;li&gt;titleCaseCityName&lt;/li&gt;
	&lt;li&gt;latitude&lt;/li&gt;
	&lt;li&gt;longitude&lt;/li&gt;
	&lt;li&gt;msaCode&lt;/li&gt;
	&lt;li&gt;msaName&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;If you would like to see all the data points available on the US Zip Code API please look at the &lt;a href="https://metadapi.stoplight.io/docs/api/9f5722da18c1e-zip-code" target="_blank"&gt;JSON schema definition&lt;/a&gt;. &lt;/div&gt;

&lt;h2&gt;Build Azure Data Factory Pipeline&lt;/h2&gt;

&lt;p&gt;From your Azure Data Factory Studio create a new pipeline. This pipeline will include the required data flow to implement the ETL pattern. In this example we'll name the pipeline "CRMLeads"&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Create new pipeline in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-create-new-pipeline.png?ver=uVWxwbq83fdU9YhBpxaGQg%3d%3d" style="width: 533px; height: 303px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert here="" image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;From the Activities menu, let's add a new &lt;strong&gt;DataFlow &lt;/strong&gt;activity.&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Add data flow in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-data-flow.png?ver=HTuiqlkgILCbyZUYYTLerw%3d%3d" style="width: 236px; height: 441px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;When you create a new Data Flow you must go to the settings and create a new data flow (again because this is a net new data flow, and we are not re-using an existing one). &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Add new data flow" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-data-flow-settings.png?ver=nobJuG4YCkkUMSp5uL4vhA%3d%3d" style="width: 600px; height: 470px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert here="" image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;Our data flow will include 6 tasks or steps for the ETL pattern to complete, at the end of the build the flow should look like this:&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Full data flow for dynamic call of zip code api " src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-zip-code-api-data-flow.png?ver=lDwcUIz2qE1ybb7LrrLx6g%3d%3d" style="width: 1047px; height: 181px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert data="" final="" flow="" here=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;h3&gt;Step 1. Add Source&lt;/h3&gt;

&lt;p&gt;The source table that resides on an Azure SQL Server database needs to be added to the flow, click on the "Add Source" drop down and select "Add Source"&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Add source on azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-source.png?ver=8c39GV7AgcOHV8Tz4mKptw%3d%3d" style="width: 809px; height: 432px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert add="" here="" source=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;On the source settings tab, click on create new dataset (this is needed to configure the SQL Server database and table that will be used on this pipeline)&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="source settings in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-Dataset.png?ver=QNGpKm0QsJCb7-c98DEOQw%3d%3d" style="width: 600px; height: 480px;" /&gt;&lt;img data="" select="" set="" /&gt;&lt;/p&gt;

&lt;p&gt;From here you're able to select &lt;strong&gt;Azure SQL Database&lt;/strong&gt; from the list of options and click continue.&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img azure="" database="" sql="" /&gt;&lt;img alt="select sql server database for dataset" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-Dataset-azure-sql-database.png?ver=crY1ci2K-BI0XwCjRj1CCQ%3d%3d" style="width: 583px; height: 558px;" /&gt;&lt;/p&gt;

&lt;p&gt;We should be able to create the linked service (for our database). Click on "New" to setup the linked service. Here we'll input the database connection information. Since our DB is running on the same account as the data factory service, we'll select the database and provide the connection information. (this configuration will be different on each organization). &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="select link service for source in data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-set-linked-service.png?ver=JrFhyPJLjyM4vgXwQrcZTA%3d%3d" style="width: 550px; height: 544px;" /&gt;&lt;/p&gt;

&lt;p&gt;We need to input all the database information from our Azure subscription.  Fill in your database connection details. &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="security settings linked service data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-set-linked-service-select-database.png?ver=4J0_3xJwQXE7yaJQm4_vFw%3d%3d" style="width: 594px; height: 461px;" /&gt;&lt;/p&gt;

&lt;p&gt;We should be able to now select the source table we'll use for this pipeline. Look for table &lt;strong&gt;dbo.sourceCRM&lt;/strong&gt; (created on the setup step of this tutorial). &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="select table on source database table" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-set-linked-service-select-table.png?ver=UIdsme9FvXAZzj5rs5mZ2A%3d%3d" style="width: 500px; height: 449px;" /&gt;&lt;/p&gt;

&lt;p&gt;Once selected we can click Ok.&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="select table" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-set-linked-service-select-table-details.png?ver=OuWAqg2GK809fxPJcED1-A%3d%3d" style="width: 500px; height: 489px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;The source transformation is now complete.&lt;/p&gt;

&lt;p&gt;&lt;insert here="" image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;&lt;insert here="" image=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;h3&gt;Step 2. Add derived column transformation&lt;/h3&gt;

&lt;p&gt;The next transformation we add on the data flow is a &lt;strong&gt;derived column&lt;/strong&gt; transformation. We need to take the zip code string from the data source and "build" a REST API request for each row (this transformation doesn't make the API call, but helps on building the "endpoint" needed to get the Zip Code details).&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="add derived column in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-derived-column.png?ver=J-yt1HDT4LXieM6AYoVLEw%3d%3d" style="width: 492px; height: 498px;" /&gt;&lt;/p&gt;

&lt;p&gt;The endpoint we'll use from the API service is &lt;a href="https://metadapi.stoplight.io/docs/api/4bd63d69a09d9-zip-code-details" target="_blank"&gt;https://global.metadapi.com/zipc/v1/zipcodes/{zipcode}&lt;/a&gt;.&lt;/p&gt;

&lt;p style="text-align: center;"&gt;  &lt;img alt="Metadapi Zip Code API get details screenshot" src="/Portals/0/Images/Blog/DataFactoryRestAPI/metadapi-zip-code-details-endpoint-documentation.png?ver=hTtsxTclhcWJSzXvPVfRmA%3d%3d" style="width: 500px; height: 264px;" /&gt;&lt;/p&gt;

&lt;p&gt;The last part of the endpoint needs to be replaced with the actual zip code from the source database, to do this we'll create a new column on our data flow called zipCodeDetailsRequest that has the following expression: &lt;/p&gt;

&lt;p&gt;[code:c#]'/zipcodes/' + zipCode[/code]&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Dynamic expression for calling zip code api" src="/Portals/0/Images/Blog/DataFactoryRestAPI/zipCodeDetailsRequest-expression.png?ver=7N3iQKsspJSNmCB1-Xdbuw%3d%3d" style="width: 557px; height: 439px;" /&gt;&lt;/p&gt;

&lt;p&gt;We will use this column in the next transformation. &lt;/p&gt;

&lt;p&gt;&lt;insert here="" images=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;h3&gt;Step 3. Add external call transformation&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;external call&lt;/strong&gt; transformation allows to call an external service (i.e. a REST API) and capture the response to use on the pipeline.   &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="add external call transformation in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-external-call.png?ver=D2oqdAIpihQ5TY0TEai7bA%3d%3d" style="width: 500px; height: 361px;" /&gt;&lt;/p&gt;

&lt;p&gt;When we add the external call, select REST for the Inline dataset type. Then we need to configure the "linked service" that will be used for the API call (this configures the connection information to the API service).&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="linked service configure rest api" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-external-call-final-linked-service.png?ver=3VGgmBbM43yHyzpBsejw2Q%3d%3d" style="width: 642px; height: 269px;" /&gt;&lt;/p&gt;

&lt;p&gt;We name the linked service as "&lt;strong&gt;ZipCodeAPI&lt;/strong&gt;" and set the base URL as : &lt;/p&gt;

&lt;p&gt;[code:plain]https://global.metadapi.com/zipc/v1[/code] &lt;/p&gt;

&lt;p&gt;(as a best practice add this API at the root level so you can re-use the same linked service on all the endpoints available from the service). &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="rest api linked service" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-rest-linked-service-configuration.png?ver=0ejNlqzljkPGRFFTa2HA9w%3d%3d" style="width: 585px; height: 368px;" /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.metadapi.com/API-Products/Zip-Code-API"&gt;US Zip Code API&lt;/a&gt; uses an &lt;strong&gt;API key&lt;/strong&gt; to authenticate valid requests, this key must be passed on the HEADER of the API request. To do this we (1) set on the ADF linked service "Authentication type" to "Anonymous". (2) Enable server certificate validation (for added security),  and we add auth headers configured as follows: &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;(3) Name: Ocp-Apim-Subscription-Key&lt;/li&gt;
	&lt;li&gt;(4) Value: Your API Key&lt;your api="" key=""&gt;&lt;/your&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="text-align: center;"&gt;&lt;img alt="security settings rest api" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-rest-linked-service-configuration-security.png?ver=HRFdq1HKTjeFeyITTHhLDA%3d%3d" style="width: 572px; height: 265px;" /&gt;&lt;/div&gt;

&lt;div&gt;Click Apply to save the configuration of the REST API linked service&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;On the external call transformation settings we set the "row relative url" to the input: zipCodeDetailsRequest. This allows to create the dynamic calls for the zip code API using each zip code value from the source table.&lt;/div&gt;

&lt;div&gt;You can check the Skip writing relative url (used to write the url to the body of the request, this is not needed) and Cache for repeat requests (if you have multiple rows with the same Zip Code, ADF can cache those results to speed up the process).&lt;/div&gt;

&lt;div style="text-align: center;"&gt;&lt;img alt="row relative url for dynamic api call" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-rest-external-call-row-relative-url.png?ver=gScifbWHblFJVk--B_oLuQ%3d%3d" style="width: 673px; height: 568px;" /&gt;&lt;/div&gt;

&lt;div&gt;On the Output tab we need to configure how ADF will process the JSON response (it needs ADF syntax). Under the body definition, the type box must have the following ADF syntax definition of the JSON response: &lt;/div&gt;

&lt;div style="text-align: center;"&gt;&lt;img alt="output configuration external call" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-external-call-output.png?ver=7ZY_jB9zm60O3yvz6cEpdg%3d%3d" style="width: 696px; height: 338px;" /&gt;&lt;/div&gt;

&lt;div&gt;&lt;insert adf="" box="" here="" syntax="" with=""&gt;&lt;/insert&gt;&lt;/div&gt;

&lt;div&gt;We can uncheck the Header and Status (we don't need them on this example).  In summary what this does is creates a new "column" called "body" that has the JSON response from the API call.&lt;/div&gt;

&lt;div&gt;Download the updated ADF syntax definition of the Metadapi Zip Code API &lt;a href="https://github.com/Metadapi/zip-code-api/tree/main/samples/Azure-Data-Factory/Dynamic-API-External-Call" target="_blank"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;/div&gt;

&lt;h3&gt;Step 4. Add derived column 2 transformation&lt;/h3&gt;

&lt;p&gt;We don't want to pass the body object created in the step above to the database, we only need to extract 8 "selected" fields from the response. To do this we use again the derived column transformation, we are going to create the 8 columns we need, and parse the values out from the API response object. &lt;/p&gt;

&lt;p&gt;We create those columns on the Derived Columns settings (we use the same name as the JSON response, this is the same name used by the target database table). For each of the columns, on the expression box you can either build the expression by using the expression builder (this let's you select the fields you need) or directly type the expression value (Example: body.data.msaCode&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;required column=""&gt;&lt;img alt="Parse column azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-derived-column-parse-json-response.png?ver=Vb2ta-A44GTuZEqbWMj97w%3d%3d" style="width: 766px; height: 448px;" /&gt;&lt;br /&gt;
&lt;img alt="Expression builder parse response" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-derived-column-parse-json-expression.png?ver=icBLNSCKdMrkTjRMkHekZw%3d%3d" style="width: 361px; height: 209px;" /&gt;&lt;/required&gt;&lt;/p&gt;

&lt;p&gt;&lt;required column=""&gt;The only exception to this is the expression for latitude and longitude, since the target table has these columns as numbers with decimals, we take the latitude and longitude "strings" and convert them to double using the expression toDouble(). (toDouble(body.data.latitude))&lt;/required&gt;&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;required column=""&gt;&lt;img alt="convert to double azure data factory expression" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-derived-column-parse-json-expression-double.png?ver=8n5sZ0fsZ9v89BSOU3N-HQ%3d%3d" style="width: 500px; height: 329px;" /&gt;&lt;/required&gt;&lt;/p&gt;

&lt;p&gt;&lt;required column=""&gt;Your final configuration should look like this:&lt;/required&gt;&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;required column=""&gt;&lt;img alt="final screenshot response parsing" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-derived-column-parse-json-final.png?ver=0CWMLRrlYi6mzmhxDzcx2A%3d%3d" style="width: 700px; height: 307px;" /&gt;&lt;/required&gt;&lt;/p&gt;

&lt;h3&gt;Step 5. Add select transformation&lt;/h3&gt;

&lt;p&gt;We now use the &lt;strong&gt;select &lt;/strong&gt;transformation to "remove" unwanted columns from what we send to the target. We do this because as of this writing, we can't send the complex object contained in the "body" column to a target SQL server table. &lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="add select transformation in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-select-transformation.png?ver=oTTdAgsNZAMpsDBLTYlfCw%3d%3d" style="width: 436px; height: 482px;" /&gt;&lt;/p&gt;

&lt;p&gt;So we find "body" from the list of columns and we click on the trash icon so it's not passed to the next step. &lt;/p&gt;

&lt;p&gt;&lt;img alt="remove body response in select statement" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-select.png?ver=DsJkD1u_jUAp6M6VoVeJ0A%3d%3d" style="width: 966px; height: 379px;" /&gt;&lt;/p&gt;

&lt;h3&gt;Step 6. Add sink (target)&lt;/h3&gt;

&lt;div&gt;The last step in the data flow is the sink (or target table).  We add a sink object:&lt;/div&gt;

&lt;div style="text-align: center;"&gt;&lt;img alt="azure data factory add sink target" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-add-sink-object.png?ver=mh9rczMcSz_lqp1IgYcTfA%3d%3d" style="width: 403px; height: 473px;" /&gt;&lt;/div&gt;

&lt;div&gt;We will leverage the same linked service that was created on step 1 (our source table and target table reside on the same database). If you have your target table in a different database you'll have to create a new linked service for the target database. &lt;/div&gt;

&lt;div style="text-align: center;"&gt;&lt;img alt="select sink table" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-sink-select-table.png?ver=2ZmJgkjxV2kaejk2-G97ZA%3d%3d" style="width: 650px; height: 120px;" /&gt;&lt;/div&gt;

&lt;div&gt;We will use the "Auto Mapping" option in the "Mapping" tab of the sink configuration (ADF will map the columns based on the column name, in this tutorial they are all consistent).  We are now ready to run the pipeline. &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;h2&gt;Run pipeline&lt;/h2&gt;

&lt;p&gt;To run the pipeline select the Pipeline tab CRMLeads and from the options menu select Add trigger/Trigger now to manually run the pipeline. &lt;/p&gt;

&lt;p&gt;&lt;img alt="run pipeline manually in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-manual-trigger.png?ver=zLtE9sBJhvJ0Mc42k1svNQ%3d%3d" style="width: 898px; height: 240px;" /&gt;&lt;/p&gt;

&lt;p&gt;You can then go to the "Monitor" tab to view the process overview. Once the status is "Succeeded" we are done with the execution of the pipeline. &lt;/p&gt;

&lt;p&gt;&lt;img alt="monitor pipeline runs in azure data factory" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-monitor.png?ver=ihrgZRWMXHOZ2DWBUW-E-g%3d%3d" style="width: 1078px; height: 265px;" /&gt;&lt;/p&gt;

&lt;p&gt;A quick check into our target table using any SQL tool shows the results of the pipeline execution:&lt;/p&gt;

&lt;p&gt;[code:sql]select * from dbo.targetCRM[/code]&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="Screenshot from select statement to verify results" src="/Portals/0/Images/Blog/DataFactoryRestAPI/data-factory-check-target-table.png?ver=Fb7qdE08jc3WrA0b9OxgCg%3d%3d" style="width: 750px; height: 431px;" /&gt;&lt;/p&gt;

&lt;p&gt;We have successfully created a Data Factory pipeline that calls a dynamically generated REST API endpoint to enhance the data from our CRM system.   &lt;/p&gt;

&lt;p&gt;Additional resources:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href="https://www.metadapi.com/API-Products/Zip-Code-API"&gt;US Zip Code API Homepage&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/" target="_blank"&gt;Azure Data Factory Documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/data-flow-source" target="_blank"&gt;ADF Source Object Documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/data-flow-external-call" target="_blank"&gt;ADF External Call Documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/data-flow-select" target="_blank"&gt;ADF Select Documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/data-flow-derived-column" target="_blank"&gt;ADF Derived Column Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><guid isPermaLink="false">9</guid></item><item><title>Python Code to Enhance Zip Codes</title><link>https://www.metadapi.com/Blog/PostId/8/python-code-to-enhance-zip-codes</link><category>Tutorials</category><pubDate>Mon, 21 Nov 2022 22:24:00 GMT</pubDate><description>&lt;p&gt;This example walks us trough a very simple Python Code that opens a file with a list of zip codes and creates a new CSV file that includes additional details related to the zip code.  You can find this example in the &lt;a href="https://github.com/Metadapi/zip-code-api" target="_blank"&gt;Zip Code github repository&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Let's dive right into it.&lt;/p&gt;

&lt;p&gt;Pattern:&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;img alt="" src="/Portals/0/Images/Blog/Article%20Diagrams%20-%20Simple%20Python%20Zip%20Code%20API.png?ver=a_K50leMjpqjfihvsAQDwQ%3d%3d" style="width: 500px; height: 735px;" /&gt;&lt;/p&gt;

&lt;p&gt;The first thing we'll do is make sure we have an API Key for using the Zip Code API. You can get a free trial here.  &lt;/p&gt;

&lt;h2&gt;Code Review&lt;/h2&gt;

&lt;pre&gt;
import requests
import csv
&lt;/pre&gt;

&lt;p&gt;We need to use the Python libraries "&lt;a href="https://pypi.org/project/requests/" target="_blank"&gt;requests&lt;/a&gt;" (to manage API calls) and "&lt;a href="https://docs.python.org/3/library/csv.html" target="_blank"&gt;csv&lt;/a&gt;" to easily manipulate csv files.&lt;/p&gt;

&lt;pre&gt;
vheaders = {"Ocp-Apim-Subscription-Key": "&lt;yourzipkey&gt;"}&lt;yourzipkey&gt;&lt;/yourzipkey&gt;&lt;/yourzipkey&gt;&lt;/pre&gt;

&lt;p&gt;In this section you need to replace the value between the quotes to your API Key. This information is passed in the header section of the REST API call. &lt;/p&gt;

&lt;pre&gt;
with open(r'sample-zips.txt', 'r') as fp:
with open('zip-enhanced.csv', 'w',newline='') as f:
writer = csv.writer(f)&lt;/pre&gt;

&lt;p&gt;Using the "with" command we'll open the sample-zips.txt file for "read" and we'll open the file zip-enhanced.csv file for write (note: if the file zip-enhanced.csv exists already, it will be replaced when the code executes).&lt;/p&gt;

&lt;pre&gt;
for line in fp:
vzipcode = line.strip()
url = f"https://global.metadapi.com/zipc/v1/zipcodes/{vzipcode}"
response = requests.get(url,headers=vheaders).json()
csvline = [vzipcode,response["data"]["stateCode"],response["data"]["stateName"],
response["data"]["titleCaseCountyName"],response["data"]["latitude"],response["data"]["longitude"] ]
writer.writerow(csvline)&lt;/pre&gt;

&lt;p&gt;In this section, we have a loop for each line of the sample-zips.txt, the first step is to assign to the variable vzipcode the current line (minus any special characters for end of line). &lt;br /&gt;
We then build the endpoint to get details of the zip code (the string value of the endpoint in the variable url). &lt;br /&gt;
Next we call the API and assign it to object "response", it's a GET request to the endpoint defined in "url" and we pass the zip code api key in the header. &lt;br /&gt;
We now create a csv line (i.e. comma separated attributes) and we look for specific attributes of the zip code that we need (the state code, the state name, the county of the zip code, the latitude and longitude).  You can see the full schema of the Zip Code response &lt;a href="https://metadapi.stoplight.io/docs/api/9f5722da18c1e-zip-code" target="_blank"&gt;here&lt;/a&gt;, there are many other attributes to serve a multitude of needs. &lt;/p&gt;

&lt;section class="call-to-action call-to-action-quaternary button-centered mb-xl"&gt;
&lt;div class="call-to-action-content"&gt;
&lt;h3&gt;Get the &lt;strong&gt;Zip Code API&lt;/strong&gt; and start building an &lt;strong&gt;awesome&lt;/strong&gt; solution!&lt;/h3&gt;
&lt;/div&gt;

&lt;div class="call-to-action-btn"&gt;&lt;a class="btn btn-lg btn-primary" href="https://www.metadapi.com/API-Products/Zip-Code-API" target="_blank"&gt;Try it Now!&lt;/a&gt;&lt;/div&gt;
&lt;/section&gt;
</description><guid isPermaLink="false">8</guid></item><item><title>Postman Tutorial</title><link>https://www.metadapi.com/Blog/PostId/6/postman-tutorial</link><category>Tutorials</category><pubDate>Sat, 23 Apr 2022 21:56:06 GMT</pubDate><description>&lt;h1&gt;Introduction to Postman&lt;/h1&gt;

&lt;p&gt;The following is a common scenario, there is a new requirement in your application (or data pipeline, website, report, etc.) and you realize that you can save hundreds of hours in development if you leverage and existing service that makes available the logic/data/service via an existing API’s for anyone to consume.  Now you have to integrate this API into your development environment and get the results you are looking for, but you have yet to understand how the API works. Yes, you’ve seen the API documentation, you know how to call API’s in your development language of choice, but you are looking to &lt;strong&gt;quickly&lt;/strong&gt; see the API in action, make sure the service is accessible, run an API request, see the data, you get the idea.  You want to quickly test the API without having to write code in you application and make sure everything works as expected. One way to do this is to leverage &lt;a href="https://www.postman.com/" target="_blank"&gt;Postman&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.postman.com/" target="_blank"&gt;Postman &lt;/a&gt;describes itself as a platform to build and use API’s, and we’ll use it today to quickly test an API.&lt;/p&gt;

&lt;p&gt;We’ll use this sample use case as an example: Our application order page needs to check that the zip code provided by the customer is a valid US and not a PO Box because you can’t deliver your product to PO Boxes. You find Metadapi’s Zip Code API with all of the US zip codes and realize that you can get this requirement done very quickly by leveraging the data provided by this API.  &lt;/p&gt;

&lt;p&gt;&lt;insert ad="" api="" box="" code="" for="" here="" zip=""&gt;&lt;/insert&gt;&lt;/p&gt;

&lt;p&gt;Let's get started !&lt;/p&gt;

&lt;h2&gt;Installing Postman&lt;/h2&gt;

&lt;p&gt;The first thing you need to do is download &lt;a href="https://www.postman.com/downloads/" target="_blank"&gt;&lt;strong&gt;Postman &lt;/strong&gt;&lt;/a&gt;(&lt;a href="https://www.postman.com/downloads/"&gt;https://www.postman.com/downloads/&lt;/a&gt;) . You also have the option to use the browser version of Postman (if you don’t want to download any software).  All your data can synch between your local installation and the Postman service so it makes portability really easy. &lt;/p&gt;

&lt;h2&gt;Navigating the Interface&lt;/h2&gt;

&lt;p&gt;When you open Postman the first thing you want to do to get running quickly is to select the Workspaces tab&lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman Interface Overview" src="/Portals/0/Images/Blog/PostmanTutorial/postman-interface-overview.png?ver=ufmqty0bYG0YXh2IFuWE7Q%3d%3d" style="width: 540px; height: 550px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-family:Calibri,sans-serif"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learning.postman.com/docs/getting-started/creating-your-first-workspace/" target="_blank"&gt;Workspaces&lt;/a&gt; are a way to organize &lt;strong&gt;your &lt;/strong&gt;work, the work of &lt;strong&gt;teams&lt;/strong&gt; the &lt;strong&gt;organization’s &lt;/strong&gt;work within Postman. If you are working in a team, and several people need access to API requests, then a team workspace is needed so you can share the work with other members of your group.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman Visibility Options" src="/Portals/0/Images/Blog/PostmanTutorial/postman-workspace-visibility-options.png?ver=xMlFqeHxaQwpxMlE-FWGgw%3d%3d" style="width: 275px; height: 224px;" /&gt;&lt;/p&gt;

&lt;p&gt;To get started we'll be using a personal workspace. We we need to create a &lt;a href="https://learning.postman.com/docs/getting-started/creating-the-first-collection/" target="_blank"&gt;Collection&lt;/a&gt;. A collection is a way to save different API requests. Collections can be organized in many different ways, by project, by API, by department, etc. For our use case we’ll create a Collection called “&lt;strong&gt;Zip Code API&lt;/strong&gt;”.&lt;/p&gt;

&lt;p&gt;Click the plus sign in the collections tab.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Add a collection in Postman" src="/Portals/0/Images/Blog/PostmanTutorial/postman-add-collection.png?ver=mQA4JLsc1XIl7v7XXIG4kg%3d%3d" style="width: 249px; height: 109px;" /&gt;&lt;/p&gt;

&lt;p&gt;The new collection details appear:&lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman New Collection Details" src="/Portals/0/Images/Blog/PostmanTutorial/postman-new-collection.png?ver=eRV6lEXntU2w-fZANSzsgw%3d%3d" style="width: 530px; height: 236px;" /&gt;&lt;/p&gt;

&lt;p&gt;Type the name of the collection as &lt;strong&gt;Zip Code API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/postman-zip-code-api-folder.png?ver=ufmqty0bYG0YXh2IFuWE7Q%3d%3d" style="width: 386px; height: 332px;" /&gt;&lt;/p&gt;

&lt;p&gt;We are going to put all the different API requests to the Zip Code API in this collection. Since we are only using API’s from Metadapi in this example, to save time we’ll add the API Key to the collection so that every request we put on this collection automatically adds the API key.  All your Metadapi API keys are located in the &lt;a href="https://www.metadapi.com/Account/My-APIs" target="_blank"&gt;My API’s&lt;/a&gt; page in your account. We get the value of the API key here to add it to the postman authorization. &lt;/p&gt;

&lt;p&gt;&lt;img alt="My API Keys from Metadapi" src="/Portals/0/Images/Blog/PostmanTutorial/metadapi-myapi-keys.png?ver=NmMvjweQ4ISaor6m3ihBQQ%3d%3d" style="width: 624px; height: 239px;" /&gt;&lt;/p&gt;

&lt;p&gt;In the Zip Code collection click the authorization tab and select API Key&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/postman-authorization-headers.png?ver=NmMvjweQ4ISaor6m3ihBQQ%3d%3d" style="width: 534px; height: 276px;" /&gt;&lt;/p&gt;

&lt;p&gt;The following information is needed to setup the API Key:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;The name of the key: &lt;code&gt;Ocp-Apim-Subscription-Key&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;The value of the key: &lt;code&gt;&lt;your api="" from="" key="" subscription="" your=""&gt;&lt;/your&gt;&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;The location of the key: Header.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/postman-authorization-header-details.png?ver=9KEQNO8fMu13zDE6MsP5XA%3d%3d" style="width: 546px; height: 403px;" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Click the “Save” button.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Any API we place in this collection will include this heading.&lt;/p&gt;

&lt;p&gt;Next, we’ll add a request to the collection.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman Add Request" src="/Portals/0/Images/Blog/PostmanTutorial/postman-add-request.png?ver=fXepGD_ujzcK4UAyzEsGNw%3d%3d" style="width: 292px; height: 344px;" /&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;This will open the add request window.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Postman add details" src="/Portals/0/Images/Blog/PostmanTutorial/postman-add-request-deails.png?ver=rfBo-SBiz3gio03TMYTG3A%3d%3d" style="width: 624px; height: 184px;" /&gt;&lt;/p&gt;

&lt;p&gt;We’ll add the following information:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;We’ll name the request: &lt;strong&gt;Get Valid Zip Code Not a PO Box&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;We select a &lt;strong&gt;GET&lt;/strong&gt; operation.&lt;/li&gt;
	&lt;li&gt;We’ll use the &lt;a href="https://metadapi.stoplight.io/docs/api/b3A6MzA3ODA5NzE-zip-code-details" target="_blank"&gt;Zip Code Details&lt;/a&gt; endpoint like this:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;https://global.metadapi.com/zipc/v1/zipcodes/90210&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;strong&gt;send &lt;/strong&gt;button to execute !&lt;/p&gt;

&lt;p&gt;&lt;span style="font-family:Calibri,sans-serif"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We have executed our first API in Postman !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/postman-review-json-results.png?ver=ufmqty0bYG0YXh2IFuWE7Q%3d%3d" style="width: 624px; height: 353px;" /&gt;&lt;/p&gt;

&lt;p&gt;We can now explore the data returned by the API to get a better understanding of the code we need to write. &lt;/p&gt;

&lt;p&gt;The endpoint documentation shows us that the element &lt;strong&gt;zipClassificationCode &lt;/strong&gt;has a specific value when a zip code is a PO Box (Value of &lt;strong&gt;P&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;&lt;img alt="Zip Code Classification Code" src="/Portals/0/Images/Blog/PostmanTutorial/zipclassificationcode.png?ver=xMlFqeHxaQwpxMlE-FWGgw%3d%3d" style="width: 444px; height: 115px;" /&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;When exploring the result we see in the payload the code that is available on this specific zip code.&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/zip-code-api-90210.png?ver=wK91YnLZofDXxtAQwy_CXw%3d%3d" style="width: 624px; height: 263px;" /&gt;&lt;/p&gt;

&lt;p&gt;Our testing team let’s us know that zip code 90009 in California is a PO Box. We have 2 choices now with Postman:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;We just replace the zip code on the existing call or&lt;/li&gt;
	&lt;li&gt;We create a new GET request on the folder and give it a different name.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both options are valid, after all we are trying to test the data, our preference is to always save different calls (even if they use the same end point) on different requests because then we can easily view and replicate different test cases as they come along. (those tests can also be automated). &lt;/p&gt;

&lt;p&gt;So we now create a new GET request called &lt;strong&gt;Get Valid Zip Code PO Box&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/zip-code-api-90009.png?ver=VO9O6eyV2RsuPPiUhPt1yw%3d%3d" style="width: 559px; height: 543px;" /&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And we see the PO Box classification code in the results.&lt;span style="color:black"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;We do the same process to create 2 more scenarios, a valid syntax but invalid zip code (i.e. 11111) and invalid syntax zip code (i.e. house).&lt;/p&gt;

&lt;p&gt;After exploring the result of the valid syntax but invalid zip code we see there is no data object and the count on the meta object is set to 0.&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/zip-code-api-valid-syntax.png?ver=zQLJ-GWIz3C0QG0PORzvdQ%3d%3d" style="width: 589px; height: 454px;" /&gt;&lt;/p&gt;

&lt;p&gt;Next we create a new request called Invalid syntax, and instead of using a zip code value, we pass a random word. In this example the word "house". &lt;/p&gt;

&lt;p&gt;The invalid syntax returns something completely different:&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/zip-code-api-invalid-syntax.png?ver=VO9O6eyV2RsuPPiUhPt1yw%3d%3d" style="width: 624px; height: 332px;" /&gt;&lt;/p&gt;

&lt;p&gt;This time the API fails with a 400 Bad Request and the error message specifies that the syntax is incorrect. So now we have created 4 different types of calls, we understand how the data is return and what’s happens on each different case when dealing with the Zip Code API. We can now take this information and create the necessary code (you can use any programming language to call this API).&lt;/p&gt;

&lt;p&gt;Our Postman Collection should look like this:&lt;/p&gt;

&lt;p&gt;&lt;img alt="" src="/Portals/0/Images/Blog/PostmanTutorial/postman-zip-code-api-final-folder.png?ver=ufmqty0bYG0YXh2IFuWE7Q%3d%3d" style="width: 298px; height: 160px;" /&gt;&lt;/p&gt;

&lt;p&gt;As you can see, using Postman as a client tool to run API calls is really easy. But the tool itself has a lot of functionality that is not covered in this tutorial, we just scratched the surface when it comes to postman. &lt;/p&gt;

&lt;h2&gt;Next Steps&lt;/h2&gt;

&lt;ol&gt;
	&lt;li&gt;Check the Postman &lt;a href="https://learning.postman.com/docs/getting-started/introduction/" target="_blank"&gt;Getting started guide&lt;/a&gt;. This is an excellent easy to read tutorial on all things Postman. &lt;/li&gt;
    &lt;li&gt;If you like video tutorials, the course "&lt;a href="https://youtu.be/VywxIQ2ZXw4" target="_blank"&gt;Postman Beginner's Course - API Testing&lt;/a&gt;" is a very complete tutorial on how to use postman. It's 2 hours long but it's easy to follow along. &lt;/li&gt;
&lt;/ol&gt;

&lt;section class="call-to-action call-to-action-quaternary button-centered mb-xl"&gt;
&lt;div class="call-to-action-content"&gt;
&lt;h3&gt;Get the &lt;strong&gt;Zip Code API&lt;/strong&gt; and start building an &lt;strong&gt;awesome&lt;/strong&gt; solution!&lt;/h3&gt;
&lt;/div&gt;

&lt;div class="call-to-action-btn"&gt;&lt;a class="btn btn-lg btn-primary" href="https://www.metadapi.com/API-Products/Zip-Code-API" target="_blank"&gt;Try it Now!&lt;/a&gt;&lt;/div&gt;
&lt;/section&gt;
</description><guid isPermaLink="false">6</guid></item></channel></rss>