> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etherscan.io/llms.txt
> Use this file to discover all available pages before exploring further.
# Get Contract Source Code
> Retrieve the source code for a verified smart contract.
export const chain = '1';
```json Example response theme={null}
{
"status": "1",
"message": "OK",
"result": [
{
"SourceCode": "pragma solidity 0.4.26;\r\n\r\ncontract Test12345 {\r\n string public test;\r\n \r\n function enterValue(string _c) {\r\n test = _c;\r\n }\r\n}",
"ABI": "[{\"constant\":false,\"inputs\":[{\"name\":\"_c\",\"type\":\"string\"}],\"name\":\"enterValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"test\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]",
"ContractName": "Test12345",
"CompilerVersion": "v0.4.26+commit.4563c3fc",
"CompilerType": "solc",
"OptimizationUsed": "1",
"Runs": "200",
"ConstructorArguments": "",
"EVMVersion": "Default",
"Library": "",
"ContractFileName": "",
"LicenseType": "None",
"Proxy": "0",
"Implementation": "",
"SwarmSource": "bzzr://f6b932198e10e83a6c872406a4252cf5eea48f37bac9a33085eba887820370cf",
"SimilarMatch": "0x60810f4d8a618edb533a168e790ab6c09b0e7707"
}
]
}
```
## OpenAPI
````yaml openapi/api-reference/endpoint/getsourcecode.json GET /v2/api
openapi: 3.1.0
info:
title: Get Contract Source Code
version: 2.0.0
description: Retrieve the source code for a verified smart contract.
license:
name: Etherscan API Terms
url: https://etherscan.io/terms
servers:
- url: https://api.etherscan.io
description: Etherscan API.
security:
- apiKey: []
paths:
/v2/api:
get:
summary: Get Contract Source Code
description: Retrieve the source code for a verified smart contract.
operationId: getGetsourcecode
parameters:
- name: chainid
in: query
required: true
description: >-
Chain ID to query, eg 1 for Ethereum, 42161 for Arbitrum from our
[supported chains](/supported-chains).
schema:
type: string
example: '1'
- name: module
in: query
required: true
description: Set to contract for this endpoint.
schema:
type: string
default: contract
example: contract
- name: action
in: query
required: true
description: Set to getsourcecode for this endpoint.
schema:
type: string
default: getsourcecode
example: getsourcecode
- name: address
in: query
required: true
description: The contract address to query.
schema:
type: string
example: '0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: >-
1 if the request returned data, 0 otherwise. A status of 0
can indicate an error or a valid request that returned no
records.
message:
type: string
description: >-
OK on success, otherwise an error description such as
NOTOK. See [common error
messages](/common-error-messages).
result:
type: array
items:
type: object
properties:
SourceCode:
type: string
description: >-
Verified source code of the contract. Empty if the
contract is not verified.
ABI:
type: string
description: >-
Contract ABI as a JSON-encoded string. Returns an
error message if the contract is not verified.
ContractName:
type: string
description: Name of the contract.
CompilerVersion:
type: string
description: Compiler version used to compile the contract.
CompilerType:
type: string
description: Type of compiler used, such as solc or vyper.
OptimizationUsed:
type: string
description: >-
1 if optimization was enabled during compilation, 0
otherwise.
Runs:
type: string
description: >-
Number of optimizer runs configured during
compilation.
ConstructorArguments:
type: string
description: >-
ABI-encoded constructor arguments used at
deployment.
EVMVersion:
type: string
description: >-
Target EVM version used during compilation. Default
if unset.
Library:
type: string
description: Libraries linked during compilation. Empty if none.
ContractFileName:
type: string
description: >-
File name of the main source file, for multi-file
verifications.
LicenseType:
type: string
description: License declared for the source code.
Proxy:
type: string
description: 1 if the contract is a proxy, 0 otherwise.
Implementation:
type: string
description: >-
Address of the implementation contract, if this is a
proxy.
SwarmSource:
type: string
description: >-
Swarm source hash of the compiler metadata, if
present.
SimilarMatch:
type: string
description: >-
Address of a verified contract with matching source
code, if matched by similarity.
security:
- apiKey: []
components:
securitySchemes:
apiKey:
type: apiKey
in: query
name: apikey
description: >-
Enter your Etherscan API key, or [set one up](/set-up-your-api-key) if
you don't have one.
````