📣 GraphQLConf 2024 • Sept 10-12 • San Francisco • Check out the Schedule & Get Your Ticket • Read more

GraphQL

A query language for your API

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.

GraphQL Client Server Architecture
Get Started

GraphQL for API consumers

GraphQL transforms the way API consumers access and interact with data, efficiently fetch the right slice of data. Whether you are building consumer facing applications or internal apps, GraphQL provides a seamless and efficient way to consume APIs.

Ask for what you need,
get exactly that

Send a GraphQL query to your API and get exactly what you need, nothing more and nothing less. GraphQL queries always return predictable results. Apps using GraphQL are fast and stable because they control the data they get, not the server.

Get many resources
in a single request

GraphQL queries access not just the properties of one resource but also smoothly follow references between them. While typical REST APIs require loading from multiple URLs, GraphQL APIs get all the data your app needs in a single request. Apps using GraphQL can be quick even on slow mobile network connections.

Move faster with powerful developer tools

Know exactly what data you can request from your API without leaving your editor, highlight potential issues before sending a query, and take advantage of improved code intelligence. GraphQL makes it easy to build powerful tools like GraphiQL by leveraging your API’s type system.

GraphQL for API producers

GraphQL provides API producers with a powerful framework for designing flexible and maintainable APIs. By defining a single, unified schema, producers can easily integrate data from multiple sources, simplifying API management. GraphQL provides a single endpoint with elevated semantic context on the data being served.

Describe what's possible
with a type system

GraphQL APIs are organized in terms of types and fields, not endpoints. Access the full capabilities of your data from a single endpoint. GraphQL uses types to ensure Apps only ask for what's possible and provide clear and helpful errors. Apps can use types to avoid writing manual parsing code.

Bring your own data and code

GraphQL creates a uniform API across your entire application without being limited by a specific storage engine. Write GraphQL APIs that leverage your existing data and code with GraphQL engines available in many languages. You provide functions for each field in the type system, and GraphQL calls them with optimal concurrency.

  • GraphQL
    type Character {
      name: String
      homeWorld: Planet
      friends: [Character]
    }
  • JavaScript
    // type Character {
    class Character {
      // name: String
      getName() {
        return this._name
      }
      // homeWorld: Planet
      getHomeWorld() {
        return fetchHomeworld(this._homeworldID)
      }
      // friends: [Character]
      getFriends() {
        return this._friendIDs.map(fetchCharacter)
      }
    }
  • Python
    # type Character {
    class Character:
      # name: String
      def name(self):
        return self._name
     
      # homeWorld: Planet
      def homeWorld(self):
        return fetchHomeworld(self._homeworldID)
     
      # friends: [Character]
      def friends(self):
        return map(fetchCharacter, self._friendIDs)
  • C Sharp
    // type Character {
    public class Character {
      // name: String
      public String Name { get; }
     
      // homeWorld: Planet
      public async Task<Planet> GetHomeWorldAsync() {
        return await FetchHomeworldAsync(_HomeworldID);
      }
     
      // friends: [Character]
      public async IEnumerable<Task<Character>> GetFriendsAsync() {
        return _FriendIDs.Select(FetchCharacterAsync);
      }
    }
  • GraphQL
    type Character {
      name: String
      homeWorld: Planet
      friends: [Character]
    }
  • JavaScript
    // type Character {
    class Character {
      // name: String
      getName() {
        return this._name
      }
      // homeWorld: Planet
      getHomeWorld() {
        return fetchHomeworld(this._homeworldID)
      }
      // friends: [Character]
      getFriends() {
        return this._friendIDs.map(fetchCharacter)
      }
    }
  • Python
    # type Character {
    class Character:
      # name: String
      def name(self):
        return self._name
     
      # homeWorld: Planet
      def homeWorld(self):
        return fetchHomeworld(self._homeworldID)
     
      # friends: [Character]
      def friends(self):
        return map(fetchCharacter, self._friendIDs)
  • C Sharp
    // type Character {
    public class Character {
      // name: String
      public String Name { get; }
     
      // homeWorld: Planet
      public async Task<Planet> GetHomeWorldAsync() {
        return await FetchHomeworldAsync(_HomeworldID);
      }
     
      // friends: [Character]
      public async IEnumerable<Task<Character>> GetFriendsAsync() {
        return _FriendIDs.Select(FetchCharacterAsync);
      }
    }

Evolve your API
without versions

Add new fields and types to your GraphQL API without impacting existing queries. Aging fields can be deprecated and hidden from tools. By using a single evolving version, GraphQL APIs give apps continuous access to new features and encourage cleaner, more maintainable server code.

GraphQL is the lingua franca for API producers

GraphQL provides a unified semantic layer that consolidates multiple discrete resources. GraphQL enables federation across multiple services and data providing a "Supergraph" experience.

GraphQL Supergraph

Who's using GraphQL?

Facebook's mobile apps have been powered by GraphQL since 2012. A GraphQL spec was open sourced in 2015 and is now available in many environments and used by teams of all sizes.

FacebookGitHubPinterestIntuitCourseraShopify
More GraphQL Users